用C写的代码,链表的创建和输出,不知道为什么输出不出来。

#include<stdio.h>#include<stdlib.h>intn;structStudent{intnum;floatscore;structStudent... #include<stdio.h>
#include<stdlib.h>

int n;
struct Student
{
int num;
float score;
struct Student *next;
};

# define LEN sizeof(struct Student)

struct Student *creat(void)
{
struct Student *head,*p1,*p2;
head=NULL;
p1=p2=(struct Student*)malloc(LEN);
scanf("%d,%f",&p1->num,&p1->score);
n=0;
while(p1->num!=0)
{
n++;
if(n==0)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(struct Student*)malloc(LEN);
scanf("%d,%f",&p1->num,&p1->score);
}
p2->next=NULL;
return (head);
}

int main()
{
struct Student *head,*p;
head=creat();
p=head;
printf("%d %f\n",p->num,p->score);
if(p!=NULL)
do
{
printf("%d %f\n",p->num,p->score);
p=p->next;
}while(p!=NULL);
return 0;
}
展开
 我来答
黑丶雨
2016-09-07 · TA获得超过554个赞
知道小有建树答主
回答量:406
采纳率:80%
帮助的人:399万
展开全部
错误内容:creat函数内while循环中,n++位置错误;

错误原因:过早的n++导致语句 if(n==0) 永远不成立,使creat函数的返回值head为空指针;

修正方式:n++语句放到while循环中 else p2->next = p1 语句之后;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式