C#优先列表

时间:2012-07-07 06:24:02

标签: c# data-structures

我无法找到合适的C#数据结构。我正在寻找PriorityList。它需要具有以下内容:

  • 只有一个项目具有给定的优先级
  • 必须始终保持分类
  • 能够将项目添加到列表的末尾 - prorityList.Add(item)
  • 能够以给定的优先级插入项目 - priorityList.Add(3,item)
  • 能够使用优先级访问任何元素 - priorityList [3]
  • 能够以给定优先级删除项目 - priorityList.RemoveAt(3)
  • 当添加或删除项目时,列表的其余部分必须适当地向上或向下移动 - 例如,如果删除第三项,则第四项成为第三项,第五项成为第四项,等

C#的SortedList看起来很有前途,但是它不能处理已经存在的优先级插入或者以给定优先级删除元素(在两种情况下都适当地移动列表)。

2 个答案:

答案 0 :(得分:7)

如果您使用标准List<T>,那么如果您使用priority == index.

,该标准应该会为您提供所需的一切

答案 1 :(得分:0)

如果使用密钥优先的SortedDictionary<TKey, TValue>怎么样?它并不完全符合您的所有要求,如果您希望优先级是唯一的,则不清楚。如果您不希望优先级是唯一的,LinkedList<T>可能是您最好的选择。