一、 实验目的:
掌握单链表的概念和建立方法。
掌握单链表的几种基本操作。
二、实验要求:
【根据下面提供的结构,参照教材“9.5 单链表”中所给出的单链表几种基本操作的代码,完成实现“学生成绩信息”相关的几种功能函数】
有一学生成绩表,输入信息包括学号、姓名、3门课程成绩。结构定义为(可以自行添加别名):
要求实现:
*1. 单链表的创建
函数声明: void CreateStuList( struct stud head ) ;
说明:创建“学生成绩信息”的单链表,并在创建时完成一些学生结点的构建和链接。
输入输出示例(如下图所示):
2. 单链表的遍历
*函数声明: void PrintStuList( struct stud head ) ;
说明:顺序输出显示单链表中所有结点的信息,每个结点信息占一行。
*3.单链表的结点插入函数声明: void StuListInsert( struct stud head) ;
说明:(1)若单链表中已存在相同学号的结点,则返回“error!”提示
(2)在已经有序的“学生成绩信息”单链表中添加新结点,结点插入后,保持链表的有序性。
(3)待插入结点的信息在本函数中接收。
提示:输入输出示例(如下图所示,需要从几个方面讨论和考虑问题):
【情况1】若待添加结点与单链表中已存在学号有重复的,则反馈提示信息,链表中结构不变;
【情况2】对链表添加结点。提醒注意,在链表中添加和在链表尾添加,是需要分别对待处理的。
4.单链表的使用
函数: main()
说明:在理解了单链表各种基本操作的基础上,尝试把这些操作组合到一起,共同实现单链表的应用。
对于之前定义的基本操作,在主函数中分别调用,实现单链表的应用。
[扩展&选做]5.单链表的结点删除
*函数声明: void StuListDelete( struct stud head )
说明:
(1)删除指定学号的链表结点。
(2)若单链表中未找到该学号的结点,则返回“error!”提示。
(3)若找到该学号的结点,则删除该结点。提示:输入输出示例(如下图所示,需要从几个方面讨论和考虑问题):
【情况1】若链表中确实存在待删除结点,则删除它。提醒注意,结点处于在链表中和链表尾,是需要分别对待处理的。
【情况2】若链表中不存在待删除结点,则需要反馈提示信息。
[扩展&选做]
6.统计——有不及格成绩的学生名单
*函数声明: void StaticScoreList( struct stud head ) ;
说明:统计单链表中各结点,有成绩不及格的学生名单,并显示输出,一个名字占一行。
输入输出示例(如下图所示,需要从几个方面讨论和考虑问题):
三,实验结果
代码在这里粘贴不了,我放在下篇了。