本实验通过设计和实现一个简单的客房管理系统,教授如何使用链表来存储和管理动态变化的数据信息。参与者将学习到链表的基本操作及其实用性。
实验一 客房管理(链表应用实验)
定义客房链表结点结构HLink
1. 实现创建客房信息链表函数`void Build(HLink &H)`:输入(客房名称、标准价格、床位数),同时修改入住价格为标准价格的80%,并设置入住状态为“空闲”。建议使用文件操作来读取客房信息。
2. 实现输出客房信息函数`void Exp(HLink H)`:展示所有客房的信息,包括客房名称、标准价格、入住价格、床位数和入住状态。
3. 编写查找房间的函数`int Find(HLink &H, char *roomN)`:根据输入的房号(如102)在链表中找到对应的客房信息,并返回其位置序号;如果未找到,则输出该客房不存在的信息。
4. 实现修改入住状态和床位数的函数`void updateH(HLink &H, int beds, char *state)`:将指定床位数量(beds)的房间的状态更新为输入的新状态(state)。
5. 编写加价处理函数`void Add(HLink &H)`:对于所有未被占用的客房,将其入住价格上调20%。
6. 实现求出最高入住价格的客房函数`HLink FirstH(HLink &H)`。该函数会返回具有最高入住价格的房间结点指针,并在链表中删除此节点前。
7. 编写移动单链表倒数第k个结点到第一个位置的功能:实现`void MoveK1(HLink &H, int k)`,注意不要使用先计算总长度再减去k的方法来找到指定的结点。
8. 实现将中间部分之后的所有节点逆序排列的函数`void ReverseN2(HLink &H)`。要求在不预先计算链表长度的情况下完成此操作。
9. 编写按入住价格升序排序客房信息的函数`void SortPriceL(HLink &H)`
10. 实现增加新结点并重新组织链表结构的功能:编写`void upBed(HLink &H,int beds)`,根据输入创建新的床位数为beds的新节点,并将其插入到相应的位置。
在主函数main()中调用以上各个功能的实现。对于查找房间信息(3)的结果,如果返回值大于等于1,则输出该客房的信息和其位置序号;否则提示客房不存在。最后展示经过各种操作后的链表内容以及最高入住价格的客房详细信息。