如何实现可寻址的FIFO队列?

时间:2017-10-06 09:39:53

标签: data-structures

我目前正在寻找一个包含所有O(1)操作的数据结构

  • insert(K,V):在队列末尾插入一个值。
  • remove_key(K):从提供的密钥对应的队列中删除值。
  • remove_head():从队列前面(最旧的队列)中删除值。

我能想到的唯一合理易于实现的事情是使用双向链表作为主要数据结构,并保持指向哈希表中列表节点的指针,这将获得所需的渐近行为,但这可能不会是实际运行时中最有效的选项。

我找到了#34;可寻址的优先级队列"在文献中,但它们相当复杂(甚至可能更昂贵)的数据结构,所以我想知道是否有人有更好的建议。到目前为止,似乎没有人为Rust实现这样的东西,这就是为什么我希望它不会变得太复杂。

2 个答案:

答案 0 :(得分:0)

我会使用pub struct VecDeque<T>并使用pop_front()代替remove_head()

请参阅文档:VecDeque

答案 1 :(得分:0)

Here我用Python实现了一个可寻址二进制堆,没有第三方依赖项。