【发布时间】:2014-04-28 11:01:19
【问题描述】:
Rust 中有这种数据类型吗?
irc 上有人告诉我使用 dlist,但它没有 remove 方法,因为它基于 dequeue。虽然算法看起来trivial
【问题讨论】:
标签: rust
Rust 中有这种数据类型吗?
irc 上有人告诉我使用 dlist,但它没有 remove 方法,因为它基于 dequeue。虽然算法看起来trivial
【问题讨论】:
标签: rust
标准库中(还没有),但这里有一个带有删除功能的实验性双向链表:https://github.com/contain-rs/linked-list
DroidLogician 播出了它in this reddit。
【讨论】:
您链接到的用于删除的算法需要访问节点本身以获取其prev 和next 指针。 Rust 中的 DList API 不会显示这些节点,只会显示存储在节点中的数据,因此像这样的公共 remove 方法没有多大意义。 remove 方法理论上可以接受与 DList 存储的参数类型相同的参数,但不能保证唯一性,实现必须是 O(n)。
DList 集合不是基于出队,但它是 Rust 中实现出队的集合之一。我的猜测是,这就是数据结构的意义所在,因此没有修改列表中间的方法,只有它的两端。
据我所知,您可以做到这一点的唯一方法是通过一些 3rd 方库(我所知道的没有),或者自己实现它。
【讨论】: