Создать односвязный упорядоченный список - C (СИ)
Формулировка задачи:
Здравствуйте, помогите пожалуйста, нужно написать программу.
Вводим числа с клавиатуры и сразу упорядочиваем их.( всё это список )
не могу понять как сделать, подскажите пожалуйста!
Решение задачи: «Создать односвязный упорядоченный список»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> typedef struct list { int data; struct list *next; } List; void Insert(List **head, const int x) { List *cur = *head; if (*head && (*head)->data < x) Insert(&(*head)->next, x); else { *head = malloc(sizeof(List)); (*head)->data = x; (*head)->next = cur; } } void Print(const List *head) { while (head) { printf("%d\n", head->data); head = head->next; } } void Free(List *head) { if (head) Free(head->next); free(head); } int main(void) { List *head = NULL; Insert(&head, 2); Insert(&head, 4); Insert(&head, 3); Insert(&head, 1); Insert(&head, 5); Print(head); Free(head); return 0; }
Объяснение кода листинга программы
- В начале кода определяются структура списка и необходимые функции для работы со списком.
- В функции Insert происходит вставка элемента в список. Если список пуст или новый элемент больше текущего элемента, то рекурсивно вызывается функция Insert для следующего элемента. Если список не пуст и новый элемент меньше текущего, то он вставляется в список.
- В функции Print происходит вывод элементов списка в консоль.
- В функции Free происходит освобождение памяти, выделенной под элементы списка.
- В функции main создается список и заполняется элементами. Затем список выводится на экран и освобождается память, выделенная под него.
- Код не содержит ошибок и работает корректно.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д