Создать и заполнить линейный односвязный список - C (СИ)
Формулировка задачи:
Здравствуйте!
Мне нужно создать и заполнить линейный односвязный список.
Вот код, который у меня получился:
Вроде бы все правильно, никаких ошибок не выдает, но программа не работает. Подскажите пожалуйста что не так!
#include <stdio.h> #include <stdlib.h> #include <conio.h> typedef struct Node { int val; struct Node *next; } Node; void PushList(Node** head, int value) { Node *tmp = (Node*)malloc(sizeof(Node)); tmp->val = value; tmp->next = (*head); (*head) = tmp; free(tmp); } void PrintList(const Node *head) { while (head != NULL) { printf("%d", head->val); head = head->next; } printf("\n"); } void main() { int i; Node *head = NULL; for (i = 0; i<10; i++) PushList(head, i); PrintList; }
Решение задачи: «Создать и заполнить линейный односвязный список»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <conio.h> typedef struct Node { int val; struct Node *next; } Node; void PushList(Node** head, int value) { Node *tmp = (Node*)malloc(sizeof(Node)); tmp->val = value; tmp->next = (*head); (*head) = tmp; free(tmp); // Ни в коем случае. Ведь этот узел должен хранить значение } void PrintList(const Node *head) { while (head != NULL) { printf("%d", head->val); head = head->next; } printf("\n"); } void main() { int i; Node *head = NULL; for (i = 0; i<10; i++) PushList(head, i); // Нужно передавать не указатель, а его адрес PrintList; // Вообще "абракадабра". Функция так не вызывается. Тем более она требует передачу параметра head }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д