关于C语言的单链表的问题

2025-03-30 18:23:45
推荐回答(1个)
回答1:

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