循环队列
2015-09-01 21:08
218 查看
![](http://www.nowamagic.net/librarys/images/201211/2012_11_22_05.jpg)
我们来讨论第二种方法,由于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,所以此时队列并没有满。
![](http://www.nowamagic.net/librarys/images/201211/2012_11_22_03.jpg)
另外,当rear > front时,此时队列的长度为rear—front。但当rear < front时,队列长度分为两段,一段是QueueSize-front,另一段是0 + rear,加在一起,队列长度为rear-front + QueueSize,因此通用的计算队列长度公式为:
(rear—front + QueueSize) % QueueSize
相关文章推荐
- java下文件遍历,与删除
- HDU 4893(Wow! Such Sequence!-线段树单点修改+区间求和+改为最近Fib数)
- UVA 6624(简单概率dp)
- c语言练习题 4-1 删数
- 【JAVA】--对环境变量的了解
- InputFormat到key-value生成流程
- PAT 1096. Consecutive Factors (20)
- Java面向对象练习-电话本管理系统
- 第十二章 多元线性回归
- 调用系统API还是很高效的,不必担心性能
- Use PRODUCT_USER_PROFILE To Limit User
- @RestController注解下返回到jsp视图页面
- bzoj3091
- iPhone第三节:UITableView
- ubuntu中apt-get安装与默认路径
- Handler 机制学习之基本用法
- Linux下java -version版本不对
- bzoj3091
- php面向对象深入理解(一)
- js的url中传递中文参数乱码,如何获取url中参数问题