我不明白这里分段错误的原因。代码是:
struct node {
int data;
struct node* next;
};
void add(int a,struct node *lista)
{
struct node *p;
p=(struct node*)malloc(sizeof(struct node*));
p->data=a;
p->next=NULL;
while(lista->next!=NULL) <--- The segmentation fault is here.
lista=lista->next;
lista->next=p;
return lista;
}
int main(void)
{
struct node *list=NULL;
list_print(list);
list=node123();
list_print(list);
add(7, &list);
list_print(list);
return 0;
}
将新节点添加到列表末尾的添加功能在朋友的计算机和设置上完美地工作。我得到分段错误。我认为问题在于lista->next
表达,但我不明白为什么。有任何想法吗?