Отсортировать введенные записи по возрастанию значений ключей - C (СИ)

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

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

С клавиатуры ввести набор записей с полями: <Ключ> <Сообщение> (ключ - целое число). Отсортировать введены записи по возрастанию значений ключей. В отсортированный массив ввести две новые записи так, чтобы сохранить общую упорядоченность массива. Распечатать результирующий массив. ( Использовать функции). Помогите пожалуйста уже почти неделю сижу.

Решение задачи: «Отсортировать введенные записи по возрастанию значений ключей»

textual
Листинг программы
  1. struct Node
  2. {
  3.     int val;
  4.     Node *next;
  5.     Node(int n) {       // Интуитивная инициализация
  6.         val = n;
  7.         next = NULL;
  8.     }
  9. };
  10.  
  11. struct List
  12. {
  13.     Node *first;
  14.     List() {
  15.         first = NULL;
  16.     }
  17. };
  18.  
  19. Node *obrat(List *list1, List **list2)
  20. {
  21.     Node *temp, *temp2;/*2 указателя*/
  22.     List *list2 = NULL;/*list2 присвоен NULL*/
  23.     temp = list1->first;/*temp указывает на list1*/
  24.     while (temp)/*Пока не пуст*/
  25.     {
  26.         temp2 = temp->next;/*temp2 указывает на предыдущий temp-у элемент*/
  27.         temp->next = *list2;/*Предыдущий temp-y элемент указывает на верхушку list2*/
  28.         *list2 = temp;/*list2 указывает на верхушку temp*/
  29.         temp = temp2;/*temp указывает на temp2, т.е. перешли на предыдущую ячейку*/
  30.     }
  31.     return temp;
  32. }

Объяснение кода листинга программы

В данном коде реализован алгоритм двусвязного списка, который, скорее всего, используется для хранения и сортировки данных.

  1. Структура Node представляет собой элемент списка и содержит в себе значение val и указатель next на следующий элемент списка.
  2. Структура List представляет собой список и содержит в себе указатель first на первый элемент списка.
  3. Функция obrat(List *list1, List **list2) принимает два указателя: на список, который нужно отсортировать (list1), и на указатель на вершину второго списка (list2). В данной реализации list2 инициализируется как NULL.
  4. Внутри функции создаются два указателя: temp и temp2. temp указывает на первый элемент списка list1, а temp2 - на предыдущий элемент temp.
  5. Затем происходит обход списка list1 до тех пор, пока temp не станет NULL.
  6. В процессе обхода каждый элемент temp добавляется в начало списка list2 путем изменения указателя temp2 на temp и обновления указателя temp на temp2.
  7. В конце функции возвращается temp, который будет указывать на последний добавленный в list2 элемент. Таким образом, данный код, скорее всего, реализует сортировку списка по возрастанию значений ключей.

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


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

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

11   голосов , оценка 3.909 из 5

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

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

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