文档库 最新最全的文档下载
当前位置:文档库 › 第八次上机实验报告

第八次上机实验报告

实验十一结构体与链表

518021910583 潘汉泓

一、实验目的和要求

1.掌握结构类型的定义方法。

2.掌握结构变量的使用方法。

3.掌握结构数组的基本使用方法。

4.掌握结构的嵌套应用。

5.掌握结构变量作为函数参数、函数返回值的编程方法。

6.掌握结构指针的概念,以及作为函数参数、函数返回值的编程方法。

7.理解单项链表的概念以及基本操作。

二、实验内容

(一)实验准备:

结构类型的定义概念知识。结构数组的基本使用方法相关知识,有函数指针的基本应用的基本概念。掌握结构指针的概念,以及作为函数参数、函数返回值的编程方法。

(二)实验项目:

题目:定义一个学生成绩结构体类型,包含“学号”(三位数)、“姓名”(不超过20个字符)、“性别”、“年龄”、“班级”(一位数字)、“英语”、“数学”、“物理”、“总分”(计算得出)、“名次”(计算得出)等信息。定义一个用于存储“学生成绩结构体”的链表,包含8个子函数分别实现下述功能:print 显示链表,将链表所有内容输出,参考函数形式:void print(const node* head)add 添加结点, 将学生插入链表尾部,参考函数形式:node* addStudent(node* head, node* p) 输入示例:add 001 Jack male 18 1 60 80 100 insert 插入结点, 将学生插入链表头部,参考函数形式:node* insStudent(node* head, node* p) 输入示例:insert 001 Jack male 18 1 60 80 100 del 删除结点, 删除指定学号的学生信息,参考函数形式:node* delStudent(node* head, int sno) 输入示例:del 002rmL 查找总分最低成绩学生,将其删除,参考函数形式:node* rmLastStudent(node* head) sortE 按英语成绩从大到小排序, 参考函数形式:node* sortByEnglish(node* head) //测试用例中英语分数各不相同 sortR 按名次从第一名到最后一名排序,参考函数形式:node* sortByRank(node* head) //测试用例中总分各不相同 reverse 逆序排序,参考函数形式: node* reverse(node* head)

分析或方案:在结构体的数据中存储下一个结构体的地址,在每次操作之后,对排名进行更新,删除链表时,分类讨论。

测试数据与运行结果:

输入:5

add 001 Jack male 18 1 60 80 100

add 002 Mary female 18 2 98 99 98

print

reverse

print

输出:001 Jack male 18 1 60 80 100 240 2

002 Mary female 18 2 98 99 98 295 1

002 Mary female 18 2 98 99 98 295 1

001 Jack male 18 1 60 80 100 240 2

二、实验小结

程序完成正常,难点在于在于链表的删除与排序,熟练地掌握sturct语句的使用,开拓了自己的编程思维,提高了自己的编程水平。

相关文档
相关文档 最新文档