Вывод элементов списка - 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, что означает успешное выполнение
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д