我们使用双链表数据结构来存储一些无序数据(数据本身是无序的,但是链接列表中的节点顺序是相关的)。此数据结构上的一个常见操作是NodeBeforeNode(节点N1,节点N2),它在列表中给出两个节点指针,并确定它们中的哪一个在另一个之前。使用快速节点顺序查询的链接列表
此操作需要线性时间,因为它需要遍历列表以查找其他元素,这非常缓慢。为了加快速度,我们已经缓存了节点本身中每个节点的序号,并根据需要刷新了这个缓存。但是,刷新缓存是线性的,而修改列表并访问缓存的操作往往非常缓慢。
我在寻找加快此行为的建议。我基本上需要一个数据结构,其允许在恒定的或对数时间所有以下操作:
- 插入(后或节点之前)
- 删除一个节点的
- NodeBeforeNode
灿任何人都会提出一个像支持相同结构的链接列表?
谢谢!
谢谢你。这是我最初尝试的 - 使用基于中序编号的next和previous指针制作AVL树。它工作得很好,但插入一个元素列表或删除N个元素的成本太高。 – Ujjwal