Ваш h
является локальным для insert
и будет уничтожен после выхода из функции управления insert
.Также любые изменения, внесенные в h
внутри insert
, не влияют на исходную головку.
Решение:
Вы можете передать ссылку на оригинальную головку на insert
чтобы сохранить изменения, сделанные в insert
, как показано ниже.
void insert(struct node **h, int data) //h is the head node
{
struct node* temp=(struct node*)malloc(sizeof(struct node));
temp->data=data;
temp->next=NULL;
if(*h == NULL)
{
*h=temp;
}
else
{
struct node* ptr = *h;
while(ptr->next!=NULL)
{
ptr=ptr->next;
}
ptr->next=temp;
}
}
и вы звоните insert
, как показано ниже.
struct node *head = NULL;
insert(&head,1);