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

2024-12-02 17:24:19
推荐回答(3个)
回答1:

循环队列的容量为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。

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

回答2:

循环队列也就是一个圆圈,容量50,也就是圆圈内有50个小分区,你可以给他编号1~50,front=45,就是档慧头指针指向第45个小分区行散答,rear=10就是尾指针指向第10个小分区,怎么会尾指针在头指针之前呢,因为他是循环对列,很简单,他绕了一圈又从头开始。所以元素个数是这样的,设为x,45+x-50=10。不管哪里,书上那个(rear-front+50)%50那个公式着实变态掘团,很罗嗦,所以我自己发明了这种方法,希望你能看懂。

回答3:

(rear-front+50)%50=15
你罩伍把循环队列看做是一个手稿盯表一样的圆圈,就能想通键闷和这道题了。