Problem 2194 --C语言11.3

2194: C语言11.3

"
Time Limit $1$ 秒/Second(s) Memory Limit $512$ 兆字节/Megabyte(s)
提交总数 $43$ 正确数量 $10$
裁判形式 标准裁判/Standard Judge 我的状态 尚未尝试
难度 分类标签

建立一个存储学生学号和成绩信息的动态链表,并参照本书例题11.8至11.11,实现这个动态链表的建立、输出、删除特定节点、插入操作。
结构体student,存储学生的学号、名字、性别和年龄,读入每个学生的所有信息,保存在结构体中,并输出。
动态链表的每个节点存储的结构体student的定义如下:
struct student {
    long num;
    float score;
    struct student * next;
};

本题较为复杂,请参考本书相应的例题进行实现。

输入的前几行为链表的建立过程。每行有一个整数和一个实数,用空格隔开,分别表示学生的学号和成绩。如果读入的学号为0,说明链表的建立过程已经结束,这个学号为0的信息不存入链表。
之后的几行每行包含一个整数,表示删除学号与这个整数相等的学生信息(删除链表节点)。如果输入的整数为0,说明删除过程已经结束,且不需要处理学号为0的节点。
最后的几行每行包含一个整数和一个实数,用空格隔开,分别表示需要插入的学生学号和成绩。如果读入的学号为0,说明插入的过程已经结束,这个学号为0的信息不需要插入链表。
输入保证在任何时刻,链表中不存在有相同学号的学生,建立链表的过程中输入的学号数值保证严格递增且大于0,链表为空时不会再继续删除。输入的总行数不超过100。

首先规定用以下格式输出某一时刻链表的状态:
在一行内输出当前链表的节点数n,并在接下来的n行中按顺序输出每一个节点(学生)的学号和成绩信息,用空格隔开,且成绩保留1位小数。
在链表的建立过程结束之后,输出当前链表状态;在每一次删除操作(不包括用来标记删除过程结束的学号为0的那一次)之后,输出链表状态;在每一次插入操作(不包括用来标记插入过程结束的学号为0的那一次)之后,输出链表状态。
请注意行尾输出换行。

10101 90
10103 87
10105 77
0 0
10103
10105
0
10104 87
10106 65
0 0
3
10101 90.0
10103 87.0
10105 77.0
2
10101 90.0
10105 77.0
1
10101 90.0
2
10101 90.0
10104 87.0
3
10101 90.0
10104 87.0
10106 65.0

推荐代码 查看2194 所有题解 上传题解视频得图灵币

本题记录 用 户(点击查看用户) 运行号(点击购买题解) 时 间
算法最快[$0 $ms] czp 450372 2019-08-01 08:48:26
内存最少[$0 $KB] 小刁要加油哟 564073 2020-01-13 10:29:38
第一AC 范晋豪@信息与计算科学142 152958 2017-11-16 15:12:24
第一挑战 范晋豪@信息与计算科学142 152958 2017-11-16 15:12:24

赛题来源/所属竞赛 教学题-C语言 C程序设计(第四版)

竞赛编号 竞赛名称 竞赛时间 访问比赛