ここでセグメンテーション違反の原因がわかりません。コードは次のとおりです。
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
表現だと思いますが、理由がわかりません。何か案は?