唯一队列溢出条件(元素少于其大小)

时间:2014-09-18 19:03:10

标签: data-structures queue

得到了这个有竞争力的问题:

Which of the following data structure may give overflow error, even though the current number of elements in it is less than its size?

a. Stack 

b. Circular queue 

c. Simple queue                        

d. None of the above  

我尝试谷歌答案以获得正确的解释,但是标有(c)和(b)的几个来源作为答案让我更加困惑。什么是解释和正确的答案? 感谢。

2 个答案:

答案 0 :(得分:1)

这个问题似乎有点奇怪,因为如果你正确地实现了这些结构中的任何一个,就不会有这样的过早溢出。

考虑到这一点,循环队列似乎是最明智的答案。原因如下:

注意:在我的解释中,队列会添加到 back 并从 front中删除

在一定数量的插入/删除之后,循环队列中的frontback指针(作为数组实现)可能位于彼此的任何一侧。

circular queue

这意味着在向此队列添加元素时,除了标准检查之外,我们还必须了解frontback指针的相对位置

在上面的第二张图片中,我们必须意识到添加到back现在必须添加到数组的开头,因为back位于数组的末尾。换句话说,添加元素必须“ 围绕 ”。如果我们没有正确地执行此检查,即使队列中仍有空间,我们最终会出现溢出。

答案 1 :(得分:0)

Ans是(c)简单队列。我们假设可以使用后面插入元素,并且可以使用前指针删除元素。并且还假设队列的最大大小为10(例如)....现在,如果后面是指向第9号的点...意味着队列中总共有10个元素。并且前面的位置是0索引。现在如果我们从另一端移除元素那么前面的值变为1 .........这里,实际上队列不满bcz索引0是空的...但是到期对于后指针的条件,即max-1,输出显示队列已满....并且该解是在循环队列中实现的。