搜索正确的数据结构(添加头部,交换,删除,…)

本文关键字:交换 删除 头部 添加 数据结构 搜索 | 更新日期: 2023-09-27 17:50:37

我正在寻找一个数据结构,它提供:

  1. 在前端添加元素
  2. 交换两个元素
  3. <
  4. 删除元素/gh>
  5. 当我添加一个元素(不是在最后一个位置)时,其他元素应该滑回(像在队列中)
  6. 访问每个元素
  7. generic很好,但不是必需的

我在MSDN上找到的数据结构不符合我的要求

  • ListLinkedList不提供交换方法
  • 我可以用ArrayList来做,但我想当我在前面添加一个元素时,它的效率很低(因为后面的所有元素都必须被复制和读取)
  • HashTable未提供订单
  • QueueStack不提供交换,随机访问,…

我可以编写自己的数据结构,但我不想重新发明轮子,因为。net库是如此之大。

编辑:

我需要一个提供类似进程优先级调度器的数据结构。第一个条目的优先级最高,最后一个条目的优先级最低。有时我必须更改元素的优先级(交换)或完全删除元素(删除)。我最近添加的元素应该具有最高的优先级(这就是为什么我把它添加在前面的位置)

搜索正确的数据结构(添加头部,交换,删除,…)

你真的需要弄清楚你要多久做一次这些操作,因为你列出了非常多的操作。

这是我对你的想法的看法:

  • 实现交换方法是微不足道的,如果你已经索引get/set。
  • 如果你担心复制时间,那么反转你的列表,这样你就可以在前面有便宜的插入,你需要重写一点逻辑来实现它,但这不会停止使用数组作为后端。

最后需要说明的是,您确定不需要某种自动排序,因为这样会使此操作更容易。

听起来你要找的是堆。

维基百科:堆

堆通常用于管理优先级,并且可以在队列顶部拥有最高优先级的项目,并根据从堆中添加或删除的不同优先级的项目重新排列。

下面是一个泛型集合库,它实现了一个间隔堆:

http://www.itu.dk/research/c5/