struct stud-node *create()
{
struct stud-node *head=NULL,*tail=NULL,*p;
int num;
char name[20];
int score;
scanf("%d%s%d",&num,name,&score); //输入第一个学生信息
if(num==0) //学号为0表示无任何信息,直接返回空
return NULL;
while(num!=0) //当学号均为有效学号时(即不为0)
{
p=(struct stud-node *)malloc(sizeof(struct stud-node)); //为待插入节点分配内存
p->num=num,strcpy(p->name,name),p->score=score; //将学号、姓名、分数存放至待插入节点
p->next=NULL; //将待插入节点的下一个节点指向空(即0x00000000)
if(head==NULL) //如果当前链表为空,则将待插入节点赋给表头和表尾
head=tail=p;
else //若当前链表已有节点存在
{
tail->next=p; //将待插入节点插入表尾(即tail->next)
tail=p; //表尾指针向后移动(因为新插入了一个节点,此时tail所指向的节点是倒数第二个节点)
}
scanf("%d%s%d",&num,name,&score);
}
return(head);
}
NULL是定义在stdio.h的一个宏,即#define NULL 0