qq_38898468 2017-06-07 16:54 采纳率: 100%
浏览 1124
已采纳

把一个新节点插入到原链表中求大神看看哪错了

#include
#include
struct student
{

int num;

char name[15];

char clas[10];

char address[20];

struct student *next;
}
main()
{

struct student *head,*New,*p,*q;

int n,i,flag=1;

scanf("%d",&n);

head=New=(struct student *)malloc(sizeof(struct student));

scanf("%d %s %s %s",&New->num,New->name,New->clas,New->address);

for(i=0;i { New->next=(struct student *)malloc(sizeof(struct student));

New=New->next;

scanf("%d %s %s %s",&New->num,New->name,New->clas,New->address);

}

New=New->next=NULL;
free(New);

while(head!=NULL)
{

printf("%d %s %s %s\n",head->num,head->name,head->clas,head->address);

head=head->next;
}
q=head;
p=(struct student *)malloc(sizeof(struct student)); scanf("%d %s %s %s",&p->num,p->name,p->clas,p->address);
while(flag)
{

if(q->num==2)
{

q->next=p->next;

p->next=q;

flag=0;

}

q=q->next;
}

while(head!=NULL)
{

printf("%d %s %s %s\n",head->num,head->name,head->clas,head->address);
head=head->next;
}
}

  • 写回答

1条回答 默认 最新

  • gracewyc 2017-06-08 01:52
    关注

    你的输出那块错了,head=head->next; 已经把head移动了,所以head最后为NULL,已经找不到链表的头节点了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?