得到了这个有竞争力的问题:
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)的几个来源作为答案让我更加困惑。什么是解释和正确的答案? 感谢。
答案 0 :(得分:1)
这个问题似乎有点奇怪,因为如果你正确地实现了这些结构中的任何一个,就不会有这样的过早溢出。
考虑到这一点,循环队列似乎是最明智的答案。原因如下:
注意:在我的解释中,队列会添加到 back
并从 front
中删除
在一定数量的插入/删除之后,循环队列中的front
和back
指针(作为数组实现)可能位于彼此的任何一侧。
这意味着在向此队列添加元素时,除了标准检查之外,我们还必须了解front
和back
指针的相对位置 。
在上面的第二张图片中,我们必须意识到添加到back
现在必须添加到数组的开头,因为back
位于数组的末尾。换句话说,添加元素必须“ 围绕 ”。如果我们没有正确地执行此检查,即使队列中仍有空间,我们最终会出现溢出。
答案 1 :(得分:0)
Ans是(c)简单队列。我们假设可以使用后面插入元素,并且可以使用前指针删除元素。并且还假设队列的最大大小为10(例如)....现在,如果后面是指向第9号的点...意味着队列中总共有10个元素。并且前面的位置是0索引。现在如果我们从另一端移除元素那么前面的值变为1 .........这里,实际上队列不满bcz索引0是空的...但是到期对于后指针的条件,即max-1,输出显示队列已满....并且该解是在循环队列中实现的。