В чем проблема при передаче главы списка в качестве параметра в функции?Связанный список, не работает при передаче главы списка в качестве аргумента в функции
#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int value;
struct node* next;
}node;
node* h1 = NULL;
void ubaci(int x, node *head)
{
node *novi = (node*)malloc(sizeof(node));
novi->value = x;
novi->next = head;
head = novi;
}
void ispisi(node *head)
{
node *temp = head;
while(temp != NULL)
{
printf("%d -> ",temp->value);
temp = temp->next;
}
}
int main()
{
int x = 0;
while(x<10)
{
x++;
ubaci(x,h1);
}
ispisi(h1);
return 0;
}
Это не работает, я не могу понять почему. Но когда я пытаюсь использовать эти функции, не передавая головку списка в качестве аргумента и используя глобальную переменную, он работает отлично. Пример:
void ubaci(int x)
{
node *novi = (node*)malloc(sizeof(node));
novi->value = x;
novi->next = h1;
h1 = novi;
}
void ispisi()
{
node *temp = h1;
while(temp != NULL)
{
printf("%d -> ",temp->value);
temp = temp->next;
}
}
Около половины тысяч связного списка вопросов, которые задают на SO есть именно этот вопрос - изменение голова на месте и не возвращает его , –
http://stackoverflow.com/questions/35350749/creating-linked-list-not-passing-back-to-main –