二级计算机知识, 循环队列

二级计算机知识,循环队列,容量50,头指针front=45,尾指针rear=10.则队列中有几个元素?答案15.求高手帮忙讲解。... 二级计算机知识,

循环队列,容量50,头指针front=45,尾指针rear=10.则队列中有几个元素?答案15.

求高手帮忙讲解。
展开
 我来答
创作者AHLhc3019hw
高粉答主

2019-08-14 · 学习数学思维,感受数学乐趣
创作者AHLhc3019hw
采纳数:46 获赞数:64900

向TA提问 私信TA
展开全部

循环队列的容量为50,如果头指针front=45(指向队头元素的前一个位置),尾指针rear=10(指向队尾元素),则该循环队列中共有15元素。50-45+10=15。

循环队列中,由于入队时尾指针向前追赶头指针;出队时头指针向前追赶尾指针,造成队空和队满时头尾指针均相等。因此,无法通过条件front==rear来判别队列是"空"还是"满"。

解决这个问题的方法至少有两种:一种为另设一布尔变量以区别队列的空和满;另一种方式就是数据结构常用的: 队满时:(rear+1)%n==front,n为队列长度(所用数组大小)。由于rear,front均为所用空间的指针,循环只是逻辑上的循环,所以需要求余运算。

类型定义采用环状模型来实现队列,各数据成员的意义如下:front指定队首位置,删除一个元素就将front顺时针移动一位;rear指向元素要插入的位置,插入一个元素就将rear顺时针移动一位;count存放队列中元素的个数,当count等于MaxQSize时,不可再向队列中插入元。

扩展资料:

循环队列就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列结构中,当存储空间的最后一个位置已被使用而再要进入队运算时,只需要存储空间的第一个位置空闲,便可将元素加入到第一个位置。

即将存储空间的第一个位置作为队尾。 循环队列可以更简单防止伪溢出的发生,但队列大小是固定的。在循环队列中,当队列为空时,有front=rear,而当所有队列空间全占满时,也有front=rear。

为了区别这两种情况,规定循环队列最多只能有MaxSize-1个队列元素,当循环队列中只剩下一个空存储单元时,队列就已经满了。因此,队列判空的条件时front=rear,而队列判满的条件时front=(rear+1)%MaxSize。

参考资料来源:百度百科-循环队列

武一鸣1
推荐于2017-11-24
知道答主
回答量:14
采纳率:0%
帮助的人:12.2万
展开全部
循环队列也就是一个圆圈,容量50,也就是圆圈内有50个小分区,你可以给他编号1~50,front=45,就是头指针指向第45个小分区,rear=10就是尾指针指向第10个小分区,怎么会尾指针在头指针之前呢,因为他是循环对列,很简单,他绕了一圈又从头开始。所以元素个数是这样的,设为x,45+x-50=10。不管哪里,书上那个(rear-front+50)%50那个公式着实变态,很罗嗦,所以我自己发明了这种方法,希望你能看懂。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
RiskYoung
2011-03-05 · 超过31用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:66.5万
展开全部
(rear-front+50)%50=15
你把循环队列看做是一个手表一样的圆圈,就能想通这道题了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式