Я начинаю изучать C и пытаюсь реализовать связанные списки. По какой-то причине мой код не работает исправление. Мои addtail
и printlist
функции работают нормально, но мой addhead
нет.Я реализую связанные списки в C, и моя функция addhead работает некорректно. Что не так?
Я не могу понять, что не так. Вот код, который я написал до сих пор:
#include <stdio.h>
int main()
{
typedef struct temp_node{
int data;
struct temp_node * next;
} node;
void addtail(node * head, int taildata){
node * tail = malloc(sizeof(node));
tail->data = taildata;
tail->next = NULL;
node * current = head;
while(current->next != NULL){
current = current->next;
}
current->next = tail;
}
void addhead(node ** head, int headdata){
node * newhead = malloc(sizeof(node));
newhead->data = headdata;
newhead->next = *head;
*head = newhead;
}
void printlist(node * head){
node * current = head;
while(current != NULL){
printf("%d\n", current->data);
current = current->next;
}
}
node * head = malloc(sizeof(node));
head->data = 0;
head->next = NULL;
addtail(head, 1);
addtail(head, 2);
addhead(head, 5);
printlist(head);
return 0;
}
Когда я запускаю его (на https://www.tutorialspoint.com/compile_c_online.php) Я получаю следующий вывод:
6299760
1
2
Почему это не меняя голову списка правильно?
У вас есть функции, определенные в рамках другой функции ('main'). Это недопустимо C. – melpomene
'addhead (head, 5);' -> 'addhead (& head, 5);' Также вам нужно '#include' –
BLUEPIXY
Вы игнорируете ошибки типа из своего компилятора? – melpomene