12.8 编程问题
(1) 为本章描述的ADT表创建基于引用的有序实现、基于数组的无序实现和基于引用的无序实现。
(2) 为本章介绍的两个表类(TableArrayBased和TableBSTBased)编写迭代器类。一定要包含remove操作的实现。
(3) 使用第3章描述的ADT列表和有序表,编写ADT表的无序和有序实现。
(4) 重复第11章编程问题4,将ADT表用作地址簿。
(5) 通过重用TableArrayBased类,实现练习题5描述的符号表。
(6) 如图12-9所示,可用堆之外的其他数据结构实现ADT优先队列。
a. 为图12-9b表示的基于引用的实现编写Java类。
b. 为图12-9c表示的基于二叉查找树的实现编写Java类。
c. 实现步骤a和b编写的类。
(7) 假设要实现一个优先队列,其优先级值为整数1到20。
a. 将优先队列实现为本章描述的队列堆。
b. 另一种解决方案使用20个队列的数组,其中每个队列对应一个优先级值。使用该方法来实现优先队列。
(8) 编写一个交互式程序,监管一家大医院的病人流动。程序应考虑病人的入院和出院,并允许访问指定病人的信息。另外,程序应管理三个手术室的时间安排表。医生请求包括病人姓名,以及表示手术紧急程度的优先级值(介于1到10)。按优先级值将病人送入手术室,对于优先级相同的病人,则遵循早来早手术的原则。
用户使用一个字母或一个单词的命令来控制程序。在设计解决方案时,试着标识必须执行的基本数据操作,并为实现选择适当的数据结构。该方法允许维护程序main部分和实现之间的墙。若有兴趣,可将该问题改写为事件驱动的模拟程序。







