码迷,mamicode.com
首页 > 其他好文 > 详细

链表学习练习题

时间:2014-11-08 17:58:47      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   io   color   ar   sp   for   strong   

 题目来源: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 }

 

 

 

 
 
 

链表学习练习题

标签:des   style   blog   io   color   ar   sp   for   strong   

原文地址:http://www.cnblogs.com/yanglingwell/p/4083587.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!