删除双链表?

时间:2014-04-28 11:01:20

标签: rust

Rust中有这样的数据类型吗?

irc上的某个人告诉我使用dlist但是它没有删除方法,因为它基于dequeue。虽然算法似乎trivial

2 个答案:

答案 0 :(得分:1)

不在标准库(尚未)中,但这里是一个带有删除的实验性双向链表:https://github.com/contain-rs/linked-list

DroidLogician播放了它in this reddit

答案 1 :(得分:0)

您链接到要删除的算法需要访问节点本身以获取其prevnext指针。 Rust中的DList API不会显示这些节点,只会显示存储在节点中的数据,因此像这样的公共remove方法没有多大意义。 remove方法理论上可以接受与DList存储的类型相同的参数,但不保证唯一性,而实现必须是O(n)

DList集合不是基于出列的,但它是Rust中实现出列的集合之一。我的猜测是这就是数据结构的意思,因此没有方法可以修改列表的中间部分,只修改它的两端。

据我所知,你可以做到这一点的唯一方法是通过一些第三方图书馆(我不知道),或者自己实施。