В список после каждого максимального числа вставить номер в списке - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Нужно в не рассортированный список вещественных чисел после каждого максимального числа вставить номер в списке и номер среди максимальных элементов этого же списка.

Решение задачи: «В список после каждого максимального числа вставить номер в списке»

textual
Листинг программы
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. struct clist {
  5.     double value;
  6.     struct clist* link;
  7. };
  8.  
  9. struct mpair {
  10.     double value;
  11.     size_t count;
  12. };
  13.  
  14. struct clist * mk_node(double value, struct clist * lst) {
  15.     struct clist * node = (struct clist *)calloc(1, sizeof(*node));
  16.     node->value = value;
  17.     node->link = lst;
  18.     return node;
  19. }
  20. void destroy(struct clist * lst) {
  21.     struct clist* tmp;
  22.     while (lst) {
  23.         tmp = lst;
  24.         lst = lst->link;
  25.         free(tmp);
  26.     }
  27. }
  28.  
  29. struct mpair count_max(struct clist const * lst) {
  30.     struct mpair m;
  31.     struct clist const* tmp;
  32.     m.count = 0;
  33.     m.value = 0.0;
  34.     if (lst) {
  35.         m.count = 1;
  36.         m.value = lst->value;
  37.         tmp = lst->link;
  38.         while (tmp) {
  39.             if (m.value == tmp->value)
  40.                 m.count++;
  41.             else if (m.value < tmp->value){
  42.                 m.count = 1;
  43.                 m.value = tmp->value;
  44.             }
  45.             tmp = tmp->link;
  46.         }
  47.     }
  48.     return m;
  49. }
  50.  
  51. struct clist * insert(double value, struct clist *lst) {
  52.     lst->link = mk_node(value, lst->link);
  53.     return lst->link;
  54. }
  55. void mk_work(struct clist* lst) {
  56.     size_t id, i;
  57.     struct mpair m = count_max(lst);
  58.     i = 0; id = 0;
  59.     while (i < m.count) {
  60.         if (lst->value == m.value) {
  61.             lst = insert(i, insert(id, lst));
  62.             ++i;
  63.         }
  64.         lst = lst->link;
  65.         ++id;
  66.     }
  67. }
  68. int main() {
  69.     return 0;
  70. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.889 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы