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