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指向的是队列中有效数据最后一个节点的下一个节点
39 _ 队列5 _ 循环队列需要几个参数来确定 及其含义的讲解.swf的更多相关文章
- 35 _ 队列1 _ 什么是队列.swf
队列是一种可以实现一个先进先出的存储结构 什么是队列? 队列(Queue)也是一种运算受限的线性表.它只允许在表的一端进行插入,而在另一端进行删除.允许删除的一端称为队头(front),允许插入的一端 ...
- [Swift]LeetCode622. 设计循环队列 | Design Circular Queue
Design your implementation of the circular queue. The circular queue is a linear data structure in w ...
- 数据结构Java实现07----队列:顺序队列&顺序循环队列、链式队列、顺序优先队列
一.队列的概念: 队列(简称作队,Queue)也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置插入和删除,而队列只允许在其一端进行插入操作在其 ...
- javascript实现数据结构与算法系列:队列 -- 链队列和循环队列实现及示例
1 队列的基本概念 队列(Queue):也是运算受限的线性表.是一种先进先出(First In First Out ,简称FIFO)的线性表.只允许在表的一端进行插入,而在另一端进行删除. 队首(fr ...
- 《Java数据结构与算法》笔记-CH4-5不带计数字段的循环队列
第四章涉及三种数据存储类型:栈,队列,优先级队列 1.概括:他们比数组和其他数据存储结构更为抽象,主要通过接口对栈,队列和优先级队列进行定义.这些 接口表明通过他们可以完成的操作,而他们的主要实现机制 ...
- 数据结构:循环队列(C语言实现)
生活中有非常多队列的影子,比方打饭排队,买火车票排队问题等,能够说与时间相关的问题,一般都会涉及到队列问题:从生活中,能够抽象出队列的概念,队列就是一个能够实现"先进先出"的存储结 ...
- 循环队列的C语言实现
生活中有很多队列的影子,比如打饭排队,买火车票排队问题等,可以说与时间相关的问题,一般都会涉及到队列问题:从生活中,可以抽象出队列的概念,队列就是一个能够实现“先进先出”的存储结构.队列分为链式队列和 ...
- 622.设计循环队列 javascript实现
设计你的循环队列实现. 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环.它也被称为“环形缓冲器”. 循环队列的一个好处是我们可以利用这个队列 ...
- LeetCode 622——设计循环队列
1. 题目 设计你的循环队列实现. 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环.它也被称为"环形缓冲器". 循环队列 ...
随机推荐
- 使用jetty作为内嵌服务器启动项目
http://blog.csdn.net/robinpipi/article/details/7557035 需求:把jetty作为内嵌的一个服务器,直接启动,web项目不用部署在应用服务器中.在网上 ...
- matlab单目相机标定——标定步骤以及参数含义
参考博客园的一篇文章: https://www.cnblogs.com/flyinggod/p/8470407.html#commentform
- 2019-ICLR-DARTS: Differentiable Architecture Search-论文阅读
DARTS 2019-ICLR-DARTS Differentiable Architecture Search Hanxiao Liu.Karen Simonyan.Yiming Yang GitH ...
- Beta冲刺——5.26
这个作业属于哪个课程 软件工程 这个作业要求在哪里 Beta冲刺 这个作业的目标 Beta冲刺 作业正文 正文 github链接 项目地址 其他参考文献 无 一.会议内容 1.组员一起学习Git分支管 ...
- Alpha冲刺 —— 5.3
这个作业属于哪个课程 软件工程 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 Alpha冲刺 作业正文 正文 github链接 项目地址 其他参考文献 无 一.会议内容 1.展 ...
- Java实现 蓝桥杯 算法提高 合并石子
算法提高 合并石子 时间限制:2.0s 内存限制:256.0MB 问题描述 在一条直线上有n堆石子,每堆有一定的数量,每次可以将两堆相邻的石子合并,合并后放在两堆的中间位置,合并的费用为两堆石子的总数 ...
- Java实现 LeetCode 479 最大回文数乘积
479. 最大回文数乘积 你需要找到由两个 n 位数的乘积组成的最大回文数. 由于结果会很大,你只需返回最大回文数 mod 1337得到的结果. 示例: 输入: 2 输出: 987 解释: 99 x ...
- java实现人员排日程
某保密单位机要人员 A,B,C,D,E 每周需要工作5天,休息2天. 上级要求每个人每周的工作日和休息日安排必须是固定的,不能在周间变更. 此外,由于工作需要,还有如下要求: 所有人的连续工作日不能多 ...
- java实现第八届蓝桥杯生命游戏
生命游戏 题目描述 康威生命游戏是英国数学家约翰·何顿·康威在1970年发明的细胞自动机. 这个游戏在一个无限大的2D网格上进行. 初始时,每个小方格中居住着一个活着或死了的细胞. 下一时刻每个细胞的 ...
- Linux脚本安装包
脚本安装包 并不是独立的软件安装包类型,常见安装的是源码包,是人为把安装过程写成了自动安装的脚本,只要执行脚本,定义简答的参数,就可以实现安装,非常类似于Windows下软件的安装方式. 安装过程(安 ...