你是要进行输入输出,所以我建议你student *creat_list(student *L)最好不要带形参,带了也可以。
你在main()函数中对L已经进行了定义,那么运行时形参也就被初始化了,也就有了地址,在student *creat_list(student *L)中你又对L进行了动态申请,二者产生矛盾,所以程序会报错。我给你修改了下代码,可以运行的,细节处自己在处理下:
student *creat_list(student *L)
{
int i;
student *p,*tail=NULL; //tail表示尾指针
L=NULL; //因为链表未建立,所以对头指针和尾指针都进行了清零处理
for(i=0;i<MAXSIZE;i++)
{
p=(student *)malloc(sizeof(student));
scanf("%d%d",&p->num,&p->score);
p->next=NULL;
if(L==NULL)
L= p;
else
tail->next=p;
tail=p;
}
return L;
}
void print_list(student *L)
{
student *s=L;
while(s)
{
printf("%ld,%d\n",s->num,s->score);
s=s->next;
}
}
[
本帖最后由 努力学习ing 于 2012-10-18 13:18 编辑 ]