2014-09-18 66 views
1

得到这个有竞争力的问题:队列溢出条件

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)作为我感到困惑甚至更多的答案。什么是解释和正确答案? 谢谢。

回答

1

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

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

注:在我的解释,队列增加backfront

去除一定数量的插入/缺失后,在循环队列指针,以frontback(实施作为数组)可以在彼此的任一侧上。

circular queue

这意味着,将元素添加到该队列时,在标准检查之上,我们还必须知道该相对位置frontback指针的。

在上面的第二张图片中,我们必须认识到,添加到back现在必须添加到数组的开头,因为back位于数组的末尾。换句话说,添加元素必须“围绕”。如果我们没有正确实施这项检查,即使队列中还有空间,我们也会发生溢出。

+0

我猜也一样。谢了哥们。 – 2014-09-18 19:18:25

+0

不客气。这是一个奇怪的问题,因为它可能会令人困惑,所以不会真正判断某人。 – nem035 2014-09-18 19:22:32

+0

你是完全正确的! – 2014-09-18 19:27:50

0

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