当前位置: 首页 > news >正文

【数据结构与算法】循环队列

循环队列

  • 一.循环队列的引入
  • 二.循环队列的原理
  • 三.循环队列判断是否为满或空
    • 1.是否为空
    • 2.是否为满
  • 四.循环队列入队
  • 五.循环队列出队
  • 六.循环队列的遍历
  • 七.循环队列获取长度
  • 八.总结

一.循环队列的引入

还记得我们顺序队列的删除元素嘛,我们有两种方式,一种是将数组要删除元素后面的元素往前面移动.
还有一种是直接将front向后面指,达到删除的效果.
这两种方式有有其弊端,第一种如果数据巨大,需要频繁的移动.
第二种则是对数组空间的浪费,删除越多,越来越多的空间浪费.
那么我们采用循环队列就可以解决这些问题.
在这里插入图片描述

二.循环队列的原理

正常我们的尾巴指向末尾,现在我们想办法,将rear指向头位置.
在这里插入图片描述
当然数组不是链表,只需要我们就指向一下进行了,我们需要能够循环的指向,当不停的插入的时候,我们不断的循环指向.

三.循环队列判断是否为满或空

1.是否为空

还是跟原来一样,如果front=rear就为空.
在这里插入图片描述

2.是否为满

在这里插入图片描述
这个就是循环链表的特殊之处了,为了能够循环指向,我们用到了取模运算,我这里MAXSIZE这个宏是5,那么我的rear可以指向0~4一直循环往返.
为什么要用rear加1,这个问题也很关键,为了更能很好的判断是否为满,我们空了一个数组元素,为什么呢?
首先,rear是指向最后一个元素的下一个元素,如果我们插满的话,因为是循环的,那么rear就会等于front,这个与我们判断是否为空就会冲突,所以我们用空数组指向的rear的下一个来判断是否与front相等来判断.

四.循环队列入队

在这里插入图片描述

五.循环队列出队

在这里插入图片描述

六.循环队列的遍历

在这里插入图片描述

七.循环队列获取长度

在这里插入图片描述

八.总结

循环队列是一种基于数组实现的队列数据结构,它的特点是可以通过循环利用数组的空间来实现高效的出队和入队操作。循环队列中通常会用到两个指针,分别指向队首和队尾。当队满时,队尾指针会绕回到数组的开头;当队空时,队首和队尾指针相等。循环队列在实际应用中常用于实现缓冲区等场景,可以提高空间利用率和操作效率。

http://www.lryc.cn/news/411060.html

相关文章:

  • 为什么推荐使用@RequiredArgsConstructor代替@Autowired?
  • ARM系列运行异常排查
  • Hive3:库操作常用语句
  • C语言实现:C51单片机驱动LCD屏幕显示字符串(Proteus+Keil)
  • 暄桐好作业之《临沈周〈东庄图册〉局部》
  • Qt3D创建3D物体步骤
  • UDP程序设计
  • 计算机网络—电路、分组、报文交换—图文详解
  • linux下交叉编译licensecc
  • 模型剪枝综述
  • 破解监控难题,局域网电脑监控软件哪家强?
  • Linux--Socket编程TCP
  • Android Studio导入源码
  • UE5 UE4 使用python进行编辑器操作
  • 区块链技术在智能城市中的创新应用探索
  • 解决mysql事件调度器重启服务后自动失效的问题
  • mybatis开启二级缓存
  • Oracle大型数据库管理(一)Oracle大型数据库管理全面指南
  • Arcgis中查找空间距离范围内字段相等的数据
  • js中map属性
  • CS224W—03 GNN
  • 库存超卖问题解决方式
  • 30岁决心转行,AI太香了
  • C#知识|文件与目录操作:目录的操作
  • 从零到一:用Go语言构建你的第一个Web服务
  • 塔子哥的环游之旅-腾讯2023笔试(codefun2000)
  • 力扣SQL50 换座位
  • SOPHGO算能科技BM1684芯片修改内存布局
  • CUDA实现矩阵乘法的性能优化策略
  • element ui 修改table筛选按钮为自定义按钮