我试图交换两个不相邻的节点。而且,它们不是前或后节点,因此它们的前一个或下一个指针不是无。Python没有指针,但为了方便起见,我将前面和后面对节点节点的引用作为其指针。 但是,我遇到的问题是,即使切换成功,以前的指针引用也会被搞乱。这里,l是左节点,r是右节点。在
def _swap(self, l, r):
assert l is not None and r is not None, "nodes to swap cannot be None"
temp = l._prev._next
l._prev._next = r._prev._next
r._prev._next = temp
temp = l._next
l._next = r._next
r._next = temp
temp = l._prev
l._prev = r._prev
r._prev = temp
return
交换前列表:4 5 2 7 1 8
交换前向后列出:8 1 7 2 5 4
我将交换包含5作为l的节点,以及包含7作为r的节点
交换后列表:4 7 2 5 1 8
交换后向后列出:8 1 7 4
我用多种方法测试了多次,结果要么是相同的,要么是某种无限循环引用。我想的是,当我改变下一个指针时,我已经弄乱了他们之前的指针,但是没有具体的证据。任何帮助都将不胜感激。谢谢。在
您可以实现将在索引处检索值的
getitem
方法,以及在索引处更新节点的setitem
方法。这样,可以通过重新分配值来编写一个简单的swap
方法:^{pr2}$
相关问题 更多 >
编程相关推荐