2012-07-07 212 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>可能是你最好的选择。