C# 优先级列表

4
我在寻找合适的C#数据结构,需要一个PriorityList,需要具备以下功能:
- 给定优先级只能有一个项 - 必须始终保持排序状态 - 可以将项添加到列表末尾 - prorityList.Add(item) - 可以在给定优先级处插入项 - priorityList.Add(3, item) - 可以使用优先级访问任何元素 - priorityList[3] - 可以删除给定优先级的项 - priorityList.RemoveAt(3) - 当添加或删除项时,列表的其余部分必须适当地上移或下移 - 例如,如果删除第三个项,则第四个项变为第三个项,第五个项变为第四个项等。
C#的SortedList看起来很有前途,但是它无法处理在已有优先级处插入或删除元素(在这两种情况下,列表必须适当地移动)。

听起来像是一个链表 http://msdn.microsoft.com/en-us/library/he2s3bh7.aspx - Jesse
如果您想按优先级对其进行排序,则遍历列表将非常有帮助。 - Narendra
VS Magazine有一个功能/可测试的实现,您可能希望查看http://visualstudiomagazine.com/articles/2012/11/01/priority-queues-with-c.aspx - John E
2个回答

8

如果你只使用标准的 List<T>,并且在使用 priority == index. 时,它应该能提供你所需的一切。


1
谢谢,我简直不敢相信我自己没想到! - Jake

0

使用 SortedDictionary<TKey, TValue> 如何?其中键是优先级。它并不完全符合您的所有要求,而且不清楚您是否希望优先级是唯一的。如果您不希望优先级是唯一的,则 LinkedList<T> 可能是最好的选择。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接