2010-12-11 143 views
-1

獲取具有最高優先級隊列中的元素值應該是首選。如何優先使用循環隊列在C++中實現隊列實現?

+2

它不是按照定義的隊列。改爲使用堆。 – Drakosha 2010-12-11 19:33:39

+0

有一個std :: priority_queue。 – Puppy 2010-12-11 19:53:23

+0

似乎已經產生了一些摩擦。也許你可以添加一些背景 - 你有多少優先級;更廣泛的目標是什麼,或者這是一個抽象的問題;我假設你想要一個固定大小的優先隊列?這可能會幫助一些評論者直接回答... – 2010-12-11 20:39:34

回答

0

您是否需要多個隊列,每個隊列都有不同的優先級?你真正想要解決的問題是什麼?

隊列的概念是 - 它是一個隊列,隊列中的下一個優先級,你應該通過彈出關閉它的隊列來通過隊列。使用另一個隊列實現優先隊列 - 無論是否循環 - 都不是最有效的事情。您可以將其作爲堆或樹來實現 - 有許多文章,其中包括Wikipedia on priority queues

+1

是的,而優先級隊列是不同的http://en.wikipedia.org/wiki/Priority_queue – Falmarri 2010-12-11 19:31:52

+0

如果我們正在討論許多級別的優先級(例如1000),那麼多個隊列不是最好的解決方案。 – Dialecticus 2010-12-11 19:34:42

+0

@Falmarri - 不確定您是否正確閱讀或解讀我的答案。與另一個隊列建立優先隊列沒有任何意義 - 認爲你錯過了這一點。 – 2010-12-13 09:35:45

0

您可以將優先級隊列實現爲二進制最小堆。每個條目的鍵可以代表其「優先級」,鍵越低,優先級越高。因此,刪除根條目將返回具有最高優先級的條目。