Я пытаюсь добавить один список в другой. Если я передаю указатель на указатель обоих списков и просто отображаю их, то код работает нормально. Но если я использую код для достижения нулевого указателя в первом списке, а затем приравниваю его к первому из второго, то это дает ошибку сегментации. Пожалуйста, дайте мне знать, в чем ошибка. Код ниже:
#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
struct node* next;
}*Head,*New;
void display(struct node **p)
{
struct node *curptr;
curptr=*p;
if(curptr==NULL)
printf("list is empty");
else
{
while(curptr)
{
printf("->%d",curptr->data);
curptr=curptr->next;
}
}
}
void combine(struct node **a,struct node **b)
{
//display(&(*a));
struct node *aptr;
aptr=*a;
while(aptr)
aptr=aptr->next;
aptr->next=*b;
*b=NULL;
display(&(*a));
//display(&(*a));
//display(&(*b));
}
void main()
{
Head=NULL;
New=NULL;
int choice;
while(1)
{
case 9:
{
printf("Combining two lists");
combine(&Head,&New);
break;
}