Создание и заполнение динамического односвязного списка - C (СИ)
Формулировка задачи:
Выручайте! Никак не могу понять как создать и заполнить односвязный список! На лекции дают какими-то отдельными кусками, причем удаление элемента, перемещение, а как создать список непонятно!
Алгоритм записан такой:
1)создать пустой список (указатель списка равен NULL)
2)создание нового эл-а списка. выделение памяти и занесение в список.
Уже 2ой час пытаюсь написать программу, например, необходимо заносить вводимые с клавиатуры числа в динамический список, вида:
Выручайте!
struct LIST{ int number; struct LIST *next; };
Решение задачи: «Создание и заполнение динамического односвязного списка»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> struct LIST { int number; struct LIST *next; }; //----------------------------------------------------------------------------- void Push(struct LIST** list, int number) { struct LIST* node = malloc(sizeof(struct LIST)); node->number = number; node->next = *list; *list = node; } //----------------------------------------------------------------------------- void Print(const struct LIST* list) { if (list) { Print(list->next); printf("%d ", list->number); } } //----------------------------------------------------------------------------- int main() { int i = 10; struct LIST* list = NULL; while (i--) { Push(&list, i + 1); } Print(list); return 0; }
Объяснение кода листинга программы
- Создание структуры данных
LIST
с полямиnumber
иnext
. - Создание функции
Push
для добавления элемента в начало списка. - Создание функции
Print
для печати списка. - Инициализация переменной
i
со значением 10. - Инициализация указателя
list
со значением NULL. - В цикле
while
вызывается функцияPush
для добавления элемента в список. - Вызывается функция
Print
для печати списка. - Возвращается значение 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д