环形队列的简单理解

多次遇到环形队列的情况,记不住什么情况是队列满,什么情况是队列空。一直也没有理解透彻。

仔细研究了一下,掌握了一些原理,记录一下。

1. 环形队列有一个头指针head,一个为指针tail。有一个疑问:head和tail分别指向哪里。网上搜的教材,有的简单说,head指向队首,tail指向队尾。有的说head指向第一个元素的位置,tail指向最后一个元素的下一个位置。有的说head指向下一个要写入的位置,tail指向下一个要读取的位置。感觉非常乱。观察了几个实例,感觉可以约定不同的规则,不同的规则,会造成判断队列空和队列满的判断方法。

下面以:head指向下一个要写入的位置,tail指向下一个要读取的位置。为例

2. 那环形队列初始化状态肯定是空的,空的时候,就是head=tail=0的状态。那满的状态是啥样的呢,假定数据从一开始一直写入,从来没有读取(tail一直为0),按道理应该是转一圈head=tail=0的时候,可是这样就无法分清楚是满还是空。于是就再约定,最多只能保存MAXN-1个数据。这样当head再增加一个的时候就认为队列满了。head再增加1那么head又会和tail指向同一个位置0。如果用单纯的head+1=tail,肯定不正确,因为比如MAXN=10,当队列满的时候head为9(9为下一个要写入的位置,而并没有写入数据)。head+1等于10。此时队列满了。这就需要对(head+1)%MAXN的操作。当tail= (head+1)%MAXN的时候队列满。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/810215.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

更换淘宝镜像地址,旧的已经失效(https://registry.npm.taobao.org )

旧的镜像地址:npm install --registryhttps://registry.npm.taobao.org 新的镜像地址:npm install --registryhttps://registry.npmmirror.com

【2024最新博客美化教程重置版】今天教你如何使用SimpleMemory美化你的博客,体会一下大神是如何装逼的!

🚀 个人主页 极客小俊 ✍🏻 作者简介:程序猿、设计师、技术分享 🐋 希望大家多多支持, 我们一起学习和进步! 🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注 SimpleMemory …

代理与反向代理

Java项目的代理与反向代理 1. 代理 定位:为客户端服务通信方向:客户端->代理服务器->远程服务器好处:对客户端行为进行过滤和控制;隐藏客户端IP地址;审计流量;缓存资源加快访问速度; 2…

ChatGPT 写作利器:探索ChatGPT在论文写作中的应用

ChatGPT无限次数:点击直达 ChatGPT 写作利器:探索ChatGPT在论文写作中的应用 引言 ChatGPT是一种强大的自然语言处理工具,能够为我们提供高效、准确的文本生成功能。在论文写作领域,ChatGPT的应用也逐渐受到关注。本文将探讨ChatGPT在论文写…

javascript:call()、apply()、bind()的区别和使用

javascript:call()、apply()、bind()的区别和使用 1 前言 记录javascript的call、apply、bind方法绑定this的区别以及使用。 call、apply、bind的区别: 【相同点】:作用相同,都是动态修改this指向;都不会修改原先函…

【算法基础】插入排序与二分查找、升级二分查找

文章目录 1. 插入排序1.1 插入排序的思想1.2 插入排序的实现 2. 普通二分查找2.1 普通二分查找的思想2.2 普通二分查找的实现 3. 升级二分查找3.1 升级二分查找思想3.2 升级二分查找实现 1. 插入排序 1.1 插入排序的思想 插入排序很类似于已有一副有序的扑克牌,不断…

【话题】AI技术创业有那些机会,简单探讨下

大家好,我是全栈小5,欢迎阅读小5的系列文章,这是《话题》系列文章 目录 背景机会一、引言二、AI技术的创业机遇1.智能服务行业的兴起2.数据驱动的业务模式创新3.AI与产业融合的创新发展 三、AI技术创业的挑战1.技术门槛高2.法规政策的不确定性…

P1712 [NOI2016] 区间(线段树 + 贪心 + 双指针)

题目描述 在数轴上有 n 个闭区间从 1 至 n 编号,第 i 个闭区间为 [li​,ri​] 。 现在要从中选出 m 个区间,使得这 m 个区间共同包含至少一个位置。换句话说,就是使得存在一个 x ,使得对于每一个被选中的区间 [li​,ri​]&#…

关于Ansible模块 ⑥

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 内容在继《关于Ansible的模块 ①》、《关于Ansible的模块 ②》、《关于Ansible的模块 ③》、《关于Ansible的模块 ④》与《关于a…

YOLOv8草莓生长状态(灰叶病缺钙需要肥料)检测系统(python开发,带有训练模型,可以重新训练,并有Pyqt5界面可视化)

本次检测系统,不仅可以检测图片、视频或摄像头当中出现的草莓叶子是否有灰叶病,还可以检测出草莓叶是否缺钙、是否需要施肥等状态。基于最新的YOLO-v8训练的草莓生长状态检测模型和完整的python代码以及草莓的训练数据,下载后即可运行&#x…

Java开发中的entity、vo和pojo

Java开发中的entity、vo和pojo 1.Entity实体2.vo3.pojo 1.Entity实体 定义: Entity 通常指的是与数据库表对应的对象。它包含了与数据库表字段相对应的属性和一些业务逻辑方法。Entity 通常用于数据的持久化操作,如增删改查。使用场景: 当需…

C语言——字符函数和字符串函数

Hello,大家好,今天和大家分享C语言中的几个字符函数和字符串函数,记得三连支持一下哦! 在编程的过程中,我们经常要处理字符和字符串,为了⽅便操作字符和字符串,C语⾔标准库中提供了⼀系列库函数…

积分短信群发平台:精准营销新利器,助力企业高效触达目标用户

在当今数字化营销时代,精准营销已成为企业获取竞争优势的关键手段。积分短信群发平台作为一种高效、精准的营销工具,正逐渐受到越来越多企业的青睐。通过该平台,企业可以针对目标用户进行个性化的积分活动推广,实现精准营销&#…

Jetpack Compose 阻尼动画效果之SplineBasedDecay

SplineBasedDecay() 是 Jetpack Compose 中的一个函数,用于创建一个基于曲线衰减的动画效果。它通常用于创建平滑的动画效果,比如惯性滚动或惯性拖动的动画效果。 作用: 创建基于曲线衰减的动画效果,使得动画在结束时会逐渐减速。提供了更自然和平滑的动画体验,特别是在实…

第一弹:HTML,学习记录

1.创建文件所需要注意事项 可以以中文命名,不使用中文。不使用特殊字符。HTML文件名推荐使用小写。如果是多个单词创建的文件名,推荐使用驼峰命名法,每个单词首字母大写 HelloWorld创建完HTML文件后依然是文本文件格式,那么需要将…

leetcode328.奇偶链表

1. 题目描述 在线练习 2. 解题思路 这道题,官方给的是中等难度。其实是一道基础题,大家应该都可以写得出来。 题目中给的示例可以清楚的看到,合并前后的奇偶链的各自包含的节点的顺序是不变的,我们基本可以确定使用尾插法来合并…

C++(15): STL算法:排序(sort)

1. 简述 std::sort 是 C 标准库 <algorithm> 中提供的一个函数&#xff0c;用于对容器&#xff08;如数组、向量等&#xff09;中的元素进行排序。它基于比较操作对元素进行排序&#xff0c;通常使用高效的排序算法&#xff0c;如快速排序、归并排序或堆排序等。 在实际应…

IDEA2023连接服务器docker并部署ruoyi-cloud-plus项目

文章目录 TCP 方式连接docker1. 服务器docker配置修改查看虚拟机中Docker配置文件位置修改配置文件重启docker服务关闭防火墙 2. idea安装docker插件3. idea连接docker服务 部署ruoyi-cloud-plus项目1. 项目环境说明2. 安装Centos73. 安装docker4. idea配置服务器SSH连接5. ide…

Python数据处理和常用库(如NumPy、Pandas)

Python是一种功能强大的编程语言&#xff0c;广泛应用于数据处理和分析领域。在Python中&#xff0c;有一些常用的库可以帮助我们进行数据处理和分析&#xff0c;其中包括NumPy和Pandas。下面是关于这两个库的简介和使用示例&#xff1a;NumPy&#xff08;Numerical Python&…

三天做完pandas数据分析50题第一天

三天做完pandas数据分析50题第一天 第1题 将python的list转换为Series第2题 将字典转换为Series第3题 将Series转换成python的list第4题 使用numpy创建series。第5题 如何为Series添加新的元素&#xff1f;第6题 使用字典创建DataFrame第7题 给DataFrame设置索引列第8题 生成一…