当前位置:网站首页 > 编程语言 > 正文

环形队列是循环队列吗(环形队列的实现)



队列的特性: 先进先出,环形队列也不例外,只不过这里的队尾指向队头,所以环形队列也叫"环形缓冲器",同时环形队列的大小是固定的,它可以重复利用某一位置。

环形队列分两种: 链表数组,这里我们写的是数组的实现方法

我们定义两个变量frontrear,一个指向队头一个指向队尾,每次插入元素的时候rear就++指向下一个位置,这里跟我们顺序表的插入其实是一样的,只不过当rear == n(数组长度-这里我们循环队列的长度是固定的), rear == n的时候我们应该让rear返回到下标为0的位置,或者可以直接对数组长度取模

  1. 入元素(队尾)
  2. 出元素(队头)
  3. 判空
  4. 判满
  5. 返回队头元素
  6. 返回队尾元素

不过这样写的话会有个问题,就是判空判满如何判断?,判空简单,判断front是否等于rear就可以了,但如果按照我们上面那个思路的话,当rear+1此时等于n再取模的时候变为0,但是此时数组元素是
如下图:
在这里插入图片描述
这里有两种解决方案:


 
  

这里我们写第二种,第一种我放在文章末尾了
在这里插入图片描述
在这里插入图片描述

这里我们多开辟一个空间的目的就是防止判空与判满冲突,只要我们的rear+1再对数组长度+1取模等于我们的front就相当于了,由于之前我们没有多开辟一个空间的时候是直接对数组长度取模,这里多开辟的一个就是对数组长度+1取模

由于队列的特性是:队头入,队尾出

队头出:
只要我们的front还小于数组长度+1(由于我们多开了一个空间,所以我们此时的长度为原数组长度+1),那我们就可以放心的直接front++,否则我们就要让front++的值对数组长度+1取模
在这里插入图片描述
队尾入:


队尾入也是一样的,只需要当rear等于数组+1的时候要对数组加一取模

动图演示:
在这里插入图片描述

取队头元素简单,直接取front位置的元素即可

重点是取队尾元素:

1.rear > 0
在这里插入图片描述

  1. rear == 0

如果此时rear == 0,rear-1就为-1,这样就会导致数组越界,所以我们取(rear-1+SIZE+1)%(SIZE+1)位置的元素,此时即便rear = 0,那我们取得也是最后一个元素,同时rear > 0的时候也是满足条件的。
在这里插入图片描述
综上: 我们取队尾元素的时候可以都直接让rear-1再加上数组长度+1再对他取模(数组长度+1)就可以得到准确的位置了。

头文件

 
  

源文件

 
  

头文件

 
  

源文件

到此这篇环形队列是循环队列吗(环形队列的实现)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就! 
  

                            

版权声明


相关文章:

  • 指数与对数的运算教案(指数与对数的知识点)2026-02-24 10:45:08
  • 动态库和静态库的区别是什么(静态库与动态库的区别与优缺点)2026-02-24 10:45:08
  • 单播地址和广播地址的关系(单播地址和广播地址的关系是什么)2026-02-24 10:45:08
  • 如何在win11上安装win7虚拟机(windows11 虚拟机如何安装包含iso文件)2026-02-24 10:45:08
  • 安卓winxp虚拟机(winxp虚拟机安卓版)2026-02-24 10:45:08
  • polowalk是什么品牌(polowalk是什么品牌怎么读)2026-02-24 10:45:08
  • vs怎么调试程序(vs2010怎么调试程序)2026-02-24 10:45:08
  • 返回上级目录命令(返回上级目录命令怎么写)2026-02-24 10:45:08
  • jflash下载程序步骤 序列号(jflash怎么烧录程序)2026-02-24 10:45:08
  • 免费代码网站(免费代码网站可复制)2026-02-24 10:45:08
  • 全屏图片