队列是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素。队列用于储存按顺序排列的数据,先进先出,这点和栈有区别。队列被用在很多地方,比如提交操作系统执行的一系列进程、打印任务池等,一些仿真系统用队列来模拟银行或杂货店里排队的顾客。
队列的基本操作
enqueue方法向队尾添加一个元素
dequeue方法删除队首的元素
front方法读取队首元素
back方法读取队尾元素
toString方法显示队列中的所有元素
empty方法判断队列是否为空
实例:方块舞的舞伴分配问题
当男男女女来到舞池,他们按照自己的性别排成两队。选两个队列中的第一个人组成舞伴。他们身后的人各自向前移动一位,变成新的队首。当一对舞伴迈入舞池时,主持人会大声喊出他们的名字。当一对舞伴走出舞池,且两排队伍中有任意一队没人时,主持人会把这个情况告诉大家。编写一个程序显示配对结果以及显示排队等候跳舞的男性和女性的数量。
优先队列
在一般情况下,从队列中删除的元素,一定是率先入队的元素。但是也有一些使用队列的应用,在删除元素时不必遵循先进先出的约定。这种应用,就是用优先队列的数据结构实现。
从优先队列中删除元素时,需要考虑优先权的限制。比如医院急诊科的候诊室,就是一个采取优先队列的例子。当病人进入候诊室时,分诊护士会评估患者病情的严重程度,然后给一个优先级代码。高优先级的患者先于低优先级的患者就医,同样优先级的患者按照本来的就诊顺序就医。
练习:
修改候诊室程序,使得候诊室内的活动可以被控制。写一个类似菜单系统的让用户可以自由选择。
a.患者进入候诊室
b.患者就诊
c.显示等待就诊的患者名单
领取专属 10元无门槛券
私享最新 技术干货