4

我无法找到正确的 C# 数据结构。我正在寻找优先级列表。它需要具备以下条件:

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

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

4

2 回答 2

8

如果您只使用一个标准,该标准List<T>应该可以满足您的所有要求,如果您使用priority == index.

于 2012-07-07T06:27:54.810 回答
0

使用SortedDictionary<TKey, TValue>where key is priority 怎么样?它并不完全符合您的所有要求,并且不清楚您是否希望优先级是唯一的。如果您不希望优先级独一无二,那么LinkedList<T>这可能是您最好的选择。

于 2012-07-07T06:37:17.920 回答