2013-10-18 137 views
0

在優先級隊列中,根據優先級插入並從隊列中刪除一個元素,並且因此在爲任何優先級隊列寫入元素的插入和刪除代碼的同時,插入和刪除根據元素的優先級來完成。優先隊列是否真的排隊?

假設你有一個隊列元素1,5,6,元素的優先級是元素本身的值,現在需要插入一個優先級爲3的元素;那麼元素被插入隊列中的第二個位置,給出新的隊列1,3,5,6。

但是一個隊列被定義爲其中的元件可以在端被插入和,但不是在中間在開始時被刪除的數據結構,但在上述情況下,元件被插入在所述第二位置(也就是在隊列的中間)。所以如果優先級隊列不服從隊列的定義,那麼優先級隊列是否真的隊列?

請解釋一下。

回答

0

優先級隊列是單詞中的「隊列」,因爲這些元素等待輪到他們。它們不是Queue抽象數據類型的子類型。

+0

那麼爲什麼他們被稱爲優先**隊列**? –

+0

因爲它們是普通(非ADT)意義上的「隊列」:它們是成員到達的地方,等待輪到他們,然後離開。 「隊列」ADT是一個「隊列」,其中等待最長的成員接下來被選中。 「優先級隊列」ADT是一個「隊列」,其中優先級最高的成員被選中。 – Sneftel

+0

+1 **我不能再問他們阻止我的問題了。我太可悲了。你們是否投票? :(** –

0

一個隊列的特徵是一個信息結構,其中組件可能在閉包時被嵌入,並且在開始時被刪除,但不在中間,然而在上面描述的情況組件嵌入在第二區域(即在隊列中)。

+0

是的,我認爲這很好 – babbuino

+0

你知道你什麼時候做這件事不是嗎? – babbuino

0

是的,優先級隊列仍然是一個隊列,意思是這些項目按照它們在隊列中的位置順序進行服務。然而,在這種情況下,優先級與每個項目相關聯並且它們被相應地服務。

0

優先級隊列是英語單詞隊列意義上的隊列,而不是稱爲「隊列」的其他數據結構的嚴格子類型。這裏沒有繼承,他們只是描述他們目的的名字。