Сортировка односвязного линейного списка по возрастанию
Содержимое статьи:
Для сортировки односвязного линейного списка по возрастанию, не заменяя информационные части, а меняя связи местами, можно использовать два указателя.
Алгоритм
- Заведите два указателя:
currиnext. - Присвойте
currначальный элемент списка. - Пока
currне равенNULL:
- Если
curr->dataбольшеnext->data: - Поменяйте связи узлов
currиnext. - Передвиньте указатели
currиnextна один шаг вперед.
Реализация на C
#include <stdlib.h>
typedef struct Node {
int data;
struct Node *next;
} Node;
void sortList(Node **head) {
Node *curr = *head, *next;
while (curr != NULL) {
next = curr->next;
while (next != NULL) {
if (curr->data > next->data) {
// Поменяйте связи узлов
Node *temp = next->next;
next->next = curr;
curr->next = temp;
// Обновите положение указателей
*head = next;
curr = next;
}
next = next->next;
}
curr = curr->next;
}
}Пример
Допустим, у нас есть список:
10 -> 5 -> 15 -> 2 -> 20. После сортировки список будет выглядеть так:2 -> 5 -> 10 -> 15 -> 20.
- Если
Чат рулетка 2026: случайные чаты с реальными людьми
Чат с Аней: семейный разговор
Генератор паролей с нижним регистром
Информационная Безопасность Бизнеса: Комплексное Решение от Гладиаторов Информационной Безопасности
Инновации в использовании 3D печати для строительства коммерческих офисных зданий
Инновации в использовании бетона с низким удельным весом для устойчивого строительства
Женские аксессуары
Казань окна VEKA - профессионализм и опыт
Новостройки Оренбурга: современные дома и предложения
Онлайн чат-партнерство
Онлайн рулетка видеочат
Пиломатериалы для террасы
Подбор шин: Что учитывать при выборе для погрузчика
Секреты Вконтакте: как управлять приватностью
Скидка 45% на отдых в Южной Корее
Стоит ли выбирать Vdsina вечный хостинг?
Удобная админ система для эффективного управления сайтом
Вода доставка