2014-09-18 105 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的條件,輸出顯示隊列已滿......並且解決方案是在循環隊列中實現的。