问下为何我为一个结点赋值时会进行到主函数的输入age语句 若连续为三个结点赋值 程序会强制结束 不执行92 93行
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
struct _node{
int num;
char name[10];
char a[10];
int age;
struct _node *next;
};
struct _node* create()
{
struct _node* head=(struct _node*)malloc(sizeof(struct _node));
head->num=0;
head->name[10]="0";
head->a[10]="0";
head->age=0;
head->next=NULL;
struct _node* pcurrent=head;
while(1)
{
int number,ag;
char na[10],b[10];
printf("请输入学号\n");
scanf("%d",&number);
printf("请输入姓名\n");
scanf("%s",na);
printf("请输入性别\n");
scanf("%s",b);
printf("请输入年纪");
scanf("%d",&ag);
if(number==0||strcmp(na,"0")==0||strcmp(b,"0")==0||ag==0)
{
break;
}
struct _node *newnode=(struct _node*)malloc(sizeof(struct _node));
newnode->num=number;
strcpy(newnode->name,na);
strcpy(newnode->a,b);
newnode->age=ag;
pcurrent->next=newnode;
pcurrent=pcurrent->next;
}
pcurrent=head->next;
printf("输出已经赋值的链表");
while(pcurrent!=NULL)
{
printf("%d\n",pcurrent->num);
pcurrent=pcurrent->next;
}
return head;
};
int del(struct _node*head,int ag)
{
struct _node* pcurrent=head->next;
struct _node* prev=head;
while(pcurrent!=NULL)
{
if(pcurrent->age==ag)
{
prev->next=pcurrent->next;
struct _node* t=pcurrent;
pcurrent=pcurrent->next;
free(t);
}
if(pcurrent!=NULL)
{
prev=prev->next;
pcurrent=pcurrent->next;
}
}
pcurrent=head->next;
printf("删除对应年纪后的链表");
while(pcurrent!=NULL)
{
printf("%s\n",pcurrent->name[10]);
pcurrent=pcurrent->next;
}
}
int main()
{
struct _node *head=create();
int age;
printf("请输入一个想要删除的年纪");
scanf("%d",&age);
del(head,age);
}