求帮忙看下这段基础的C语言链表代码 ,为什么输出学生成绩是0
程序代码:
#include <stdio.h> #include <stdlib.h> typedef struct student{ long num; float score; struct student *next; } STU; STU *head=NULL; STU *creat(void) { long number; float grade; STU *last=NULL; scanf("%d %d",&number,&grade); while (number!=0&&grade!=0) { //add to linked-list STU *p=(STU*)malloc(sizeof(STU)); p->num=number; p->score=grade; p->next=NULL; // find the last last=head; if(last){ while(last->next){ last=last->next;} //attach last->next=p; } else head=p; scanf("%d %d",&number,&grade); }; return(head); } int main() {STU *pt=creat(); printf("\nnum:%ld\nscore:%5.1f\n",pt->num,pt->score); //输出链表第一个学生的学号和成绩 return 0; }
结果是 输入
1001 78
1002 79
0 0结束输入
然后输出
num:1001
score:0.0
输出的成绩一直是0 这是怎么回事
求大神帮忙看看 谢谢