王道队列选择题的疑问

img


这个第六题的maxsize不应该是22吗?maxsize不应该是数组容纳的最大元素个数吗?所以A【21】的maxsize不应该是22吗

在循环队列中,队列长度可以通过如下公式计算:

length = (rear - front + max_size) % max_size

其中max_size为队列的最大容量。对于给定的情况,由于front和rear分别为8和3,而队列容量为21,因此可以得到:

length = (3 - 8 + 21) % 21
= 16

因此,该循环队列的长度为16。

至于为什么max_size = 21,是因为在循环队列中,存储队列元素的数组有一个空闲位置不存储元素,这是为了区分队列为空和队列为满的情况。因此,如果定义队列容量为22,则数组实际可以存储的元素个数为21,其中一个位置是空闲的。因此,在计算队列长度时,应该使用max_size - 1

如果对你有帮助的话,请给我一个采纳哟,谢谢