【发布时间】:2011-09-02 07:19:55
【问题描述】:
我们使用双向链表数据结构来存储一些无序的数据(数据本身是无序的,但是链表中的节点顺序是相关的)。这个数据结构的一个常见操作是NodeBeforeNode(Node N1, Node N2),它在链表中给定两个节点指针,并确定它们中的哪一个在另一个之前。
此操作需要线性时间,因为它需要遍历列表以找到另一个元素,这非常慢。为了加快速度,我们在节点本身中缓存了每个节点的序号,并根据需要刷新了这个缓存。然而,刷新缓存是线性的,交替修改列表和访问缓存的操作往往很慢。
我正在寻找加快这种行为的建议。我基本上需要一个数据结构,它允许在常数或对数时间内进行以下所有操作:
- 插入(在节点之后或之前)
- 删除一个节点
- NodeBeforeNode
谁能推荐一个类似链表的结构来支持相同的结构?
谢谢!
【问题讨论】:
标签: indexing linked-list