void del(struct student*head)
{
struct student*p1,*p2,*q;
int i=0;
p1=head;
printf("请输入要删除学生的学号:\n");
q=(struct student*)malloc(sizeof(struct student));
scanf("%d",&q->num);
while(p1!=NULL)
{
i++;
if(i==1 && p1->num==q->num)
{
head=p1->next;
printf("已删除该学生信息\n");
print(head);//这是我写的输出函数,在这个删除函数调用时没有问题,但是如果在主函数调用输出函数,还是会输出我已经删掉的信息
break;
}
p2=p1;p1=p1->next;
if(i!=1 && p1->next!=NULL && p1->num==q->num)
{
p2->next=p1->next;
free(p1);//不知道为什么一有这句运行程序就会出错
printf("已删除该学生信息");
break;
}
if(p1->next=NULL && p1->num==q->num)
{
p2->next=NULL;
free(p1);
printf("已删除该学生信息");
break;
}
}
void main()
{
struct student*head;
head=create();
system("cls");
print(head);
getchar();
getchar();
del(head);
getchar();
getchar();
system("cls");
print(head);
}
这是主函数
放主函数外头也不管用啊
追答放外面之后就不要return语句了,就是return head;这句就不要了