首页 > 代码库 > 链表学习练习题

链表学习练习题

 题目来源: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         else23         {24             p2=p1;//用p2来记录p1刚刚走过的结点25             p1=(struct student *)malloc(LEN);//开辟新的结点来存储新的内容26             p2->next=p1;//p2的next指向p127             scanf("%s%s%f",&p1->num,p1->name,&p1->score);//输入结点内容28         }29     }30     p1->next=NULL;//最后的结点指向NULL31     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 }

 

 

 

 
 
 

链表学习练习题