《计算思维与算法入门》 —2.6 队列

举报
华章计算机 发表于 2019/12/10 14:44:29 2019/12/10
【摘要】 本节书摘来自华章计算机《计算思维与算法入门》一书中第2章,第2.6.1节,作者是赵军 等。

2.6    队列

队列(Queue)和堆栈都是有序列表,也属于抽象数据类型,所有加入与删除的操作都发生在队列前后两端,即队首和队尾,并且符合“先进先出”(First In First Out,FIFO)的特性。队列的概念就好比乘火车时买票的队伍,先到的人当然可以优先买票,买完后就从队伍前端离去准备乘火车,而队伍的后端又陆续有新的乘客加入,如图2-41所示。

 image.png

图2-41  买火车票的队伍就是队列原理的应用

队列在计算机领域应用得也相当广泛,例如计算机的模拟(Simulation)、CPU的作业调度(Job Scheduling)、外围设备联机并发处理系统(Spooling)的应用与图遍历的广度优先搜索法(Breadth-First Search,BFS)。堆栈只需一个top指针指向堆栈顶部,而队列则必须使用front和rear两个指针分别指向队列的前端和末尾,如图2-42所示。

 image.png

图2-42  队列结构示意图

队列是一种抽象数据结构,有下列特性:

(1)具有先进先出的特性。

(2)拥有加入与删除两种基本操作,而且使用front与rear两个指针分别指向队列的前端与末尾。

队列的基本运算有表2-2所示的5种。

表2-2  队列的基本运算

image.png

2.6.1  双向队列

双向队列(Double Ended Queues,DEQue)是一种有序线性表,加入与删除可在队列的任意一端进行,如图2-43所示。

 image.png

图2-43  双向队列的示意图

具体来说,双向队列就是允许队列两端都具备删除或加入功能,而且无论是左端还是右端的队列,队首与队尾指针都是朝队列中央移动的。通常,双向队列的应用可以分为两种:一种是数据只能从一端加入,但可以从两端取出;另一种是可从两端加入,但从一端取出。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。