create开头部分
scanf("%s %d %s %d",&p->data.name,&p->data.age,&p->data.sex,&p->data.num);
这里p还没有分配内存。
所以野指针越界访问导致停止工作了。
你可以试试这样
struct node*creat()
{
struct node *head,*tail,*p;
head=tail=NULL;
do
{
p=(struct node *)malloc(sizeof(struct node));
p->next=NULL;
if(head==NULL)
head=tail=p;
else
{
tail->next=p;
tail=p;
}
printf(" 姓名1 年龄 性别 学号\n");
scanf("%s %d %s %d",&p->data.name,&p->data.age,&p->data.sex,&p->data.num);
}while(p->data.num!=0);
return (head);
}
不过 可以预见的是,最后会多一个节点出来。就是p->data.num=0那个。
最好再想办法删除