循环队列
来源:互联网 发布:金妍儿 知乎 编辑:程序博客网 时间:2024/06/03 21:32
我们来讨论第二种方法,由于rear可能比front大,也可能比front小,所以尽管它们只相差一个位置时就是满的情况,但也可能是相差整整一圈。所以若队列的最大尺寸为QueueSize,那么队列满的条件是(rear+1) %QueueSize == front (取模“%的目的就是为了整合rear与front大小为一个问题)。
比如上面这个例子, QueueSize = 5,当 front=0,而 rear=4, (4+1) %5 = 0,所以此时队列满。再比如,front = 2而rear =1。(1 + 1) %5 = 2,所以此时 队列也是满的。而对于下图, front = 2而rear= 0, (0+1) %5 = 1,1!=2,所以此时队列并没有满。
另外,当rear > front时,此时队列的长度为rear—front。但当rear < front时,队列长度分为两段,一段是QueueSize-front,另一段是0 + rear,加在一起,队列长度为rear-front + QueueSize,因此通用的计算队列长度公式为:
(rear—front + QueueSize) % QueueSize
0 0
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 第十二章 多元线性回归
- 数据结构基础 之 循环链表
- 零知识证明
- c语言练习题 4-1 删数
- onSaveInstanceState() 和 onRestoreInstanceState()方法
- 循环队列
- 再散列操作
- 编译qt-extended-4.4.3的时候出现问题解决办法
- 获取电脑硬件信息
- 结构体和共用体关于内存的分配问题
- 类集相关
- 聊天界面的制作(一)——基本布局的实现
- cat proc/version在内核中是如何实现的?
- java实现给一个文件重命名