本资料为数据结构课程实验设计与实践内容合集,涵盖链表、树、图等多种数据结构的操作实现及算法应用示例。
《数据结构实验》第一部分 客房管理(链表实验)
目标:采用结构化程序设计思想编写客房管理系统各个功能函数的代码实现,熟练掌握单链表创建、输出、查找、修改、插入、删除以及排序等操作算法。
时间安排:8小时
要求:
1. 编写一个创建客房信息链表的函数`void Build(HLink &H)`。输入包括房间名称(字符串类型)、标准价格和床位数,同时将入住价格默认设置为标准价格的80%,状态设为“空闲”。使用文件操作读取上述数据。
2. 实现输出所有客房信息的功能:编写一个名为Exp(HLink H)的函数来展示每个房间的信息包括名称、标准价格、入住价格、床位数和当前的状态。
3. 编写查找功能,定义`int Find(HLink &H, char *roomN)`用于寻找指定名称的房间。如果找到则返回该客房在链表中的位置序号(>=1),否则返回0。
4. 定义一个名为updateH(HLink &H, int beds, char *state)的功能,它将床位数为beds的所有房间的状态修改为给定状态。
5. 实现增加未入住的房间的价格20%的功能:编写`void Add(HLink &H)`函数。
6. 编写一个名为FirstH(HLink &H) 的功能来找出价格最高的客房,并将其从链表中删除后返回该结点指针。
7. 定义`MoveK1(HLink &H, int k)`,将单链表的倒数第k个节点移动到第一个位置。
8. 实现名为ReverseN2(HLink &H) 的函数来反转从中间元素开始的所有后续结点。
9. 编写一个排序功能:`void SortPriceL(HLink &H)`按照入住价格和房间名称进行升序排列。
10. 定义创建新客房的函数,名为upBed(HLink &H,int beds),此函数插入一个新的床位数为beds的新结点,并保持其他节点原有的顺序。
主程序`main()`需要调用以上所有功能并按照指定格式输出结果。
可能使用的辅助函数包括从文件读取数据和字符串处理等。
第二部分 串模式匹配算法(串实验)
目标:设计一个包含多个菜单选项的控制台应用程序,实现朴素模式匹配、KMP改进算法(Next[])以及另一种KMP改进算法(NextVal[])的功能。
时间安排:8小时
要求:
1. 设计主程序以展示5个菜单项的内容和输入提示。
2. 每种方法都需要输出详细的执行过程,并报告总的比较次数及成功匹配的位置或失败信息。
第三部分 二叉树遍历与路径查找(二叉树实验)
目标:实现建立、先序遍历,中序遍历,后序遍历和层次遍历以及求解给定节点的路径的功能。
时间安排:8小时
要求:
1. 设计一个主菜单程序提供6个选项供用户选择。
2. 使用数字0-6来表示不同的操作项。其他输入无效。