题目来源:SWUST OJ 程序设计C 实验六 结构体 题目三 学生结构体链表(0068)
Description
用结构体建立学生信息,学生信息包括学号、姓名、成绩,建立一个有 n 名学生的链 表, 并将链表输出。
Input
一次输入学生信息包括学号、姓名。0 0 0结束程序
Output
从链表表头到表位依次输出。
Sample Output
C1001 Li 70
M1002 He 89
E1003 Xie 83
M1004 Wu 92
E1005 Bao 80
Sample Input
C1001 Li 70
M1002 He 89
E1003 Xie 83
M1004 Wu 92
E1005 Bao 80
源代码(Accepted):
1 #include<stdio.h> 2 #include<stdlib.h> 3 #define LEN sizeof(struct student) 4 struct student//表示每个结点 5 { 6 char num[50]; 7 char name[50]; 8 float score; 9 struct student *next;//指向下一个结点 10 }; 11 int main() 12 { 13 struct student *p1,*p2,*head; 14 p1=p2=(struct student *)malloc(LEN);//开辟第一个结点 15 scanf("%s%s%f",p1->num,p1->name,&p1->score);//输入第一个结点 16 head=NULL; 17 if(p1->num[0]==‘0‘&&p1->name[0]==‘0‘&&p1->score==0)//判断第一次是否结束循环 18 return 0; 19 for(int i=0;p1->num[0]!=‘0‘||p1->name[0]!=‘0‘||p1->score!=0;i++){//输入结束的条件 20 if(i==0) 21 head=p1;//链表头记录下来 22 else 23 { 24 p2=p1;//用p2来记录p1刚刚走过的结点 25 p1=(struct student *)malloc(LEN);//开辟新的结点来存储新的内容 26 p2->next=p1;//p2的next指向p1 27 scanf("%s%s%f",&p1->num,p1->name,&p1->score);//输入结点内容 28 } 29 } 30 p1->next=NULL;//最后的结点指向NULL 31 p1=head; 32 while(p1->next!=NULL){//输出数据 33 printf("%s %s %g\n",p1->num,p1->name,p1->score); 34 p1=p1->next; 35 } 36 return 0; 37 }
时间: 2024-08-11 05:34:38