2012-07-07 264 views
3

我無法找到正確的C#數據結構。我正在尋找PriorityList。它需要具備以下條件:C#優先級列表

  • 只有一個項的優先
  • 必須始終
  • 能力的項目添加到列表的末尾保持排序狀態 - prorityList.Add(項目)
  • 能力在給定的優先級插入項目 - priorityList.Add(3,項目)
  • 能力使用優先級來訪問任何元件 - priorityList [3]
  • 能力在給定的刪除的項priority - priorityList.RemoveAt(3)
  • 當添加或刪除某個項目時,列表的其餘部分必須相應地向上或向下移動 - 例如,如果刪除了第三個項目,第四個項目變爲第三個項目,第五個項目變爲第四個項目,等

C#的排序列表看上去有希望的,但它不能處理在給定的優先級在一個已經存在的優先級插入或取出元件(具有在這兩種情況下適當地列表移)。

+0

聽起來像一個LinkedList http://msdn.microsoft.com/en-us/library/he2s3bh7.aspx – Jesse 2012-07-07 06:26:08

+0

如果你想按優先級排序,那麼遍歷列表將會很有幫助。 – Narendra 2012-07-07 06:56:50

+0

VS雜誌有一個功能/可測試的實現,你可能希望檢查http://visualstudiomagazine.com/articles/2012/11/01/priority-queues-with-c.aspx – 2012-12-04 15:05:10

回答

6

如果只是用一個標準List<T>應該給你,你已經要求,如果你使用priority == index.

+0

謝謝,不能相信我沒有'我自己想象出來! – Jake 2012-07-07 06:46:03

0

如何使用SortedDictionary<TKey, TValue>其中關鍵是優先的一切嗎?它並不完全符合您的所有要求,並且不清楚您是否希望優先級別是唯一的。如果你不希望優先權是唯一的,LinkedList<T>可能是你最好的選擇。