上面讲解都是循环队列,如果是链表实现的话就很简单,队列只有循环队列才比较复杂

此时队列中只存储一个有效元素3,当在删除一个元素的时候,队列为空,pFont向上移动,pFont等于pRear,但是此时pFont的值不为null

1、下面分析下如何向队列中添加元素

我们添加元素的时候只有在pRear的地方添加,pRear向上移动

上面这种情况,pRear已经指向了数组的最尾部分,此时添加数据的时候,pRear不能继续向上加1,执行6的位置,这个时候会出现内存溢出,pRear要执行到数组的0位置第一个元素节点,存储的数据放在5个位置

数组的长度是6,(5+1)% 6就是0,就指向了数组的第一个元素的地址

3、循环队列的删除元素的伪算法讲解

删除输出的是pFont向上移动

现在f执行4这个位置,队列中只有一个数值c,pRear指向的节点规定是不存储有效的数据的,pRear始终指向队列有效数据的最后一个节点的下一个节点。

此时pFont向上移动,pFont等于pRear,队列中数据为空了

下面这种情况:

pFont指向数值的尾部,队列中还有两个数值国和n,现在要删除数据,pFont不能向上移动了,而应该移动到第一个元素0的位置将国删除,所以pFont的移动要满足下面的算法

5、如何判断循环队列是否为空

7、如何判断队列已经存储满

上面中队列中存储q r s  m四个元素

pFont和pRear的有没有任何关系了,我们来分析下

当我们初始化一个队列的时候pFont和pRear都指向0这个位置,当向该队列中添加一个元素的时候,把元素的值存储在当前pRear指向的位置,然后pRear向上移动一个单位

当继续添加的数据的时候,pRear不断向上移动

上面队列中存储了 m n p q r s的值,这个时候pRear的值是大于pFont,也存在下面的情况

pFont的值大于PRear,二者是没有任何规律的

当上面这种情况的时候,上面的队列已经存储满了数组的长度是6 里面存储了 m n p q r数据,pRear执行的节点的数据是无效的,pRear定位为执行队列中最后有效数据节点的下一个节点。

如果你这样设置,你还想在5位置的地方存储s,这个时候

pRear和pFont又相等了,前面我们约定过pRear和pFont相等的时候,数组是null的,现在数组满的时候二者又相等,所以二者矛盾了

上面这种情况也代码队列已经满了

所谓的少用一个元素指的就是pRear指向的节点的数据的值是无效的,Prear指向的是队列中有效数据最后一个节点的下一个节点

最新文章

  1. CentOS离线安装GCC编译环境
  2. Adapter 启动时报错
  3. win7下 安装 Flask
  4. delphi下TList的用法
  5. 前端测试框架 jasmine 的使用
  6. Keeplived 配制图解
  7. (转)union和union all的区别
  8. 链方法[C# 基础知识系列]专题三:如何用委托包装多个方法——委托链
  9. UI_APPEARANCE_SELECTOR 延伸
  10. 二:搭建一个webpack3.5.5项目:建立项目的webpack配置文件
  11. java基础知识6-- 抽象类,抽象方法,接口,构造方法,类方法等易混淆的知识点
  12. blob2clob/clob2blob研究
  13. 二十一、Hadoop学记笔记————kafka的初识
  14. socket通信如何处理每次包长度不定问题
  15. Ubuntu 开启远程登录 SSH 的安装和配置
  16. jQuery index() 方法
  17. linux之目录文件操作
  18. jquery快速获得url 的get传值
  19. 设置IIS7/IIS7.5的FTP支持断点续传
  20. 三星a9上测试egret与pixi.js的渲染性能

热门文章

  1. BUUCTF Crypto_WP(2)
  2. 利用Python进行数据分析第六季第七集
  3. HDL-数字电路建模的要点
  4. 带你学够浪:Go语言基础系列-环境配置和 Hello world
  5. Java中的String、StringBuffer和StringBuilder
  6. Java实现 LeetCode 811 子域名访问计数 (暴力)
  7. Java实现 LeetCode 775 全局倒置与局部倒置(分析题)
  8. Java实现 LeetCode 391 完美矩形
  9. Java实现 LeetCode 224 基本计算器
  10. Java实现 蓝桥杯VIP 算法提高 我们的征途是星辰大海