Создать и заполнить линейный односвязный список - 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
}