统计学生信息(使用链表完成)

统计学生信息(使用链表完成)

【描述】

利用动态链表记录从标准输入输入的学生信息(学号、姓名、性别、年龄、得分、地址)

其中,学号长度不超过20, 姓名长度不超过40, 性别长度为1, 地址长度不超过40

【输入】

输入包括若干行,每一行都是一个学生的信息,如:
00630018 zhouyan m 20 10.0 28#460
输入的最后以"end"结束

【输出】

输出将输入的内容倒序输出
每行一条记录,按照
学号 姓名 性别 年龄 得分 地址
的格式输出

【水题一枚】建一个双向链表,倒着输出。

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<cmath>
 6 using namespace std;
 7 struct stu
 8 {
 9     char num[25], name[45], sex, scr[45];  //score也要用字符串!贼坑!调了我20分钟!
10     int age;
11     char addr[45];
12     bool scan()
13     {
14         scanf("%s", num);
15         if(strcmp(num, "end") == 0) return true;
16         scanf("%s %c", name, &sex);
17         scanf("%d %s %s", &age, scr, addr);
18         return false;
19     }
20     void print()
21     {
22         printf("%s %s %c ", num, name, sex);
23         printf("%d %s %s
", age, scr, addr);
24     }
25 };
26 struct node
27 {
28     stu data;
29     node *pre, *next;
30 }*head, *tail, *p;
31 int main()
32 {
33     head = new node;
34     head -> next = NULL;
35     head -> pre = NULL;
36     tail = head;
37     while(1)
38     {
39         
40         p = new node;
41         if(p -> data.scan()) break;
42         p -> pre = tail;
43         tail -> next = p;
44         p -> next = NULL; tail = p;
45     }
46     p = tail;
47     while(p != head)
48     {
49         p -> data.print();
50         p = p -> pre;
51     }
52     return 0;
53 }