题
我正在实现一个斐波那契堆,其中列表存储为循环双链表。我试图做的是给出一个指向一个链表中的随机节点的指针,另一个链表中的随机节点,我想在O(1)时间将它们合并在一起。我试图画出这个,但我似乎无法弄清楚如何做到这一点。这是我的第一个想法,在伪代码中:
union(Node one, Node two) {
if other = nil
return
p1 = one
p2 = one.right
p3 = two
p4 = two.right
p1.right = p4
p4.left = p1
p2.right = p3
p3.left = p2
}
每个 Node
有一个 left
和 right
属性,其分别将节点存储到左侧和右侧。然而,这并没有奏效。任何人都可以弄清楚如何将两个链表合并在一起?
不隶属于 cs.stackexchange