第5章 队列

前言

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

5.1 认识队列

       我们同样可以使用数组或列表来建立一个队列。不过堆栈只需要一个top,指针指向堆栈顶,而队列则必须使用front和rear两个指针分别指向前端和尾端,如图所示:

5.1.1 队列的工作运算

5.1.2队列的数组实现

5.1.3以链表实现队列

5.2 队列的应用

       队列在计算机领域的应用也相当广泛。

5.2.1环形队列

5.2.2优先队列

5.2.3双向队列

小结

  • 队列(Queue)和堆栈都是有序表,也属于抽象数据类型(ADT),它所有加入与删除的动作都发生在不同的两端,并且符合First In First Out(先进先出)的特性。
  • 队列的基本运算:CREATE、ADD、Delete、Front、Empty。
  • 队列除了能以数组的方式来实现外,我们也可以用链表来实现队列。
  • 队列的应用:图遍历的先广后深搜说法(BFS)、计算机的模拟(simulation)、CPU的工作调度、外设脱机批处理系统。
  • 环形队列就是一种环形的队列,它是Q(0:n-1)的一维数组。同时Q(0)为Q(n-1)的下一个元素。
  • 优先队列(priority queue)为一种不必遵守队列特性——FIFO(先进先出)的有序表,其中的每一个元素都赋予一个优先权(Priority),加入元素时可任意加入,但有最高级优先权(Highest Priority Out First,HPOP)则最先输出。
  • 双向队列(Deques)是英文名称(Double-ends Queues)的缩写,双向队列(Deque)就是一种前后两端都可以输入或取出数据的有序表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值