1、设计1目的
深入掌握队列应用的算法设计。
2、设计1正文
2.1 实验内容
编写一个程序,反映病人到医院排队看病的情况。在病人排队过程中,主要重复下面两件事。
⑴病人到达诊室,将病历本交给护士,排到等待队列中候诊。
⑵护士从等待队列中取出下一位病人的病例,该病人进入诊室就诊。
要求模拟病人等待就诊这一过程。程序采用菜单方式,其选项及功能说明如下。
⑴排队:输入排队病人的病历号,加入病人排队队列中。
⑵就诊:病人排队,队列中最前面的病人就诊,并将其从队列中删除。
⑶查看排队:从队头到队尾列出所有排队病人的病历号。
⑷不再排队,余下依次就诊:从队头到队尾列出所有排队病人的病例号,并退出运行。
⑸下班:退出运行
实验中设计的功能算法如下:
本实验采取链队列存放病人排队的情况。设计的功能算法如下。
SeeDoctor():模拟病人看病过程。病人排队看病要用到一个队列,可以设计了一个链队列。
Destroyqueue(QuType *&qu):释放病人排队所建立的就医队列。
exist(QuType *qu,int no):队列中是否有病历号no的病人在排队。
2.2 实验分析
根据实验内容分析,病人看病这个过程符合先进先出的特点,并且病人数量存在不确定性,因此采取链队队列这一数据结构来解决而采用普通队列的话则可能因为病人树数量过多而发生错误。
在病人排队这个过程中,主要进行两种事情:1.病人排队候诊(进队)也就是LineUp()函数2.病人进诊室就诊(出队)也就是SeeDoctor()函数。
其中查看排队对应着队列的遍历,不在排队,余下依次就诊可以用一个判定条件为队列非空的循环来依次输出队列的剩余元素通过AllSee