Вывод элементов списка - C (СИ)
Формулировка задачи:
Здравствуйте! Есть односвязный список, требуется вывести все его элементы. Но суть в том, что я начинаю прогон по списку с head'а, в котором у меня последнее введенное значение, т.е, соответственно, список выводится в порядке, обратном тому порядку, в котором я вводил список. Как вывести элементы списка в обратном порядке? Подскажите пожалуйста. Заранее благодарю.
Решение задачи: «Вывод элементов списка»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> typedef int Data; typedef struct Node { Data data; struct Node* next; } Node; //----------------------------------------------------------------------------- void push(Node** list, const Data data) { Node* node = malloc(sizeof(Node)); node->data = data; node->next = *list; *list = node; } //----------------------------------------------------------------------------- void printFromHead(const Node* list) { if (list) { printf("%d ", list->data); printFromHead(list->next); } } //----------------------------------------------------------------------------- void printFromTail(const Node* list) { if (list) { printFromTail(list->next); printf("%d ", list->data); } } //----------------------------------------------------------------------------- int main() { int i; Node* list = NULL; for (i = 0; i < 10; ++i) { push(&list, i + 1); } printFromHead(list); putchar('\n'); printFromTail(list); putchar('\n'); return 0; }
Объяснение кода листинга программы
- Подключаются необходимые заголовочные файлы
- Объявляются типы данных для элементов списка
- Определяется структура узла списка
- Создаются функции для добавления элемента в начало списка и для вывода элементов из начала и конца списка
- В функции main создается список и заполняется элементами
- Вызываются функции для вывода элементов списка
- Программа завершается возвратом значения 0, что означает успешное выполнение
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д