我将头部定义为全局变量。用户输入应该附加到单个链接列表的整数。我实现了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;
}
答案 0 :(得分:1)
你设置为null
head =NULL;
下次访问时,您正试图访问其中一个属性
if(head->next ==NULL)
你不能这样做,因为没有head->next
因为head
为空
答案 1 :(得分:0)
由于您将head
初始化为NULL
,因此该行会导致错误:
if(head->next ==NULL)
当您尝试访问next
指针的成员NULL
时。
要解决此问题,请在致电head
之前分配Append
,或在head
内检查NULL
Append
。
答案 2 :(得分:0)
//插入(X)=&GT;启用此选项并更新有效的头节点。如果不在Append()函数中,if(head-&gt; next)应该更改为if(head)。这是头指针必须在访问下一步之前验证..