39 _ 队列5 _ 循环队列需要几个参数来确定 及其含义的讲解.swf

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

 

 

此时队列中只存储一个有效元素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指向的是队列中有效数据最后一个节点的下一个节点

 

posted on   luzhouxiaoshuai  阅读(302)  评论(0编辑  收藏  举报

编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示