我将head定义为全局变量。用户输入整数,该整数应附加到单链列表中。我实现了append函数,但是它给了我一个分割错误。
void Append(int x)
{
struct Node *temp, *current;
temp = (struct Node*)malloc(sizeof(struct Node));
temp -> data = x;
temp -> next = NULL;
if(head->next ==NULL)
{
head = temp;
}
else{
//current = (struct Node*)malloc(sizeof(struct Node));
current = head;
while(1)//current != NULL)
{
if(current->next ==NULL)
{
current =current -> next;
printf("added to the end\n");
break;
}
current = current -> next;
}
}
}
主要功能如下:
int main()
{
//create empty List
head =NULL;
printf("How many numbers?\n");
int n,i,x;
scanf("%d",&n);
for(i =0; i<n; i++)
{
printf("Enter the number\n");
scanf("%d",&x);
//Insert(x);
Append(x);
Print();
}
return 0;
}
最佳答案
您将head设置为null
head =NULL;
下次访问它时,您尝试访问的是其中一个属性
if(head->next ==NULL)
您无法执行此操作,因为没有
head->next
,因为head
为null关于c - 在为链表实现附加功能时遇到段错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21538220/