动态链表问题
你们好!书上有个动态链表的代码,编译通过后,运行不了。譬如,输入数据后,回车,一直没反应,或者是死机,请问是什么问题呢?谢谢!!代码:
#include<stdio.h>
#include<malloc.h>
#define LEN sizeof(struct student) //动态分配内存长度
#define NULL 0
struct student //定义结构体
{
long num;;
float score;
struct student *next;
};
int n; //结点数
struct student *creat(void)
{
struct student *head,*p1,*p2;
n=0;
head=NULL;
p1=p2=(struct student *)malloc(LEN); //让P1,P2同时指向新建立的结点
scanf("% ld,% f",&p1->num,&p1->score); //输入数据部分
while(p1->num!=0) //判断是否结束
{
n=n+1; //每输入一次,n+1,表示新建第几个结点
if(n==1) head=p1; //当第一次建立时,把头指针指向新建结点
else p2->next=p1; //如果不是,把前结点的尾指针指向新建结点
p2=p1; //把P2指向P1,两者将共同指向新结点
p1=(struct student *)malloc(LEN); //建立新结点
scanf("% ld,% f",&p1->num,&p1->score);
}
p2->next=NULL; //如果输入为0,让P2尾指针指向空指针
return head; //返回头指针
}
void main()
{
struct student *pt;
pt=creat(); //把返回头指针赋给pt
printf("\nnum:% ld\nscore:% 5.1f\n",pt->num,pt->score);//打印
}