python双向链表-insertAfter节点

python doubly linked list - insertAfter node

我正在创建一个 python class 来实现双向链表。我有一个单独的 class 用于 DLL 节点本身和一个 class 用于列表。 这是我的 DLL 节点 class: class DLL 节点:

def __init__(self,element,nextnode=None,prevnode=None,):

    self._element = element
    self._next = nextnode
    self._prev = prevnode

我有一个名为 insertAfter(self,x,y) 的方法,它在第一次出现 x 之后插入节点 y。这是哪个:

if self.size != 0:
        n = DLLNode(y)
        if self.head._element == x:
            n._next = self.head._next
            self.head._next._prev = n
            n._prev = self.head
            self.head._next = n
            self.size += 1

        elif self.tail._element == x:
            self.tail._next = n
            n._prev = self.tail
            n._next = None
            self.tail = n
            self.size += 1
        else:
            iterator = self.head._next
            while iterator._next is not None:
                if iterator._element == x:
                    n._next = iterator._next
                    iterator._next._prev = n
                    n._prev = iterator
                    iterator._next = n
                    self.size += 1
                else:
                    iterator = iterator._next

然而,当我 运行 这个函数时,函数永远循环,当我自己终止函数时,错误指的是倒数第 4 行 iterator._next = n 它没有说任何其他东西,这就是为什么我很困惑。 非常感谢任何帮助:)

循环中

while iterator._next is not None:

then 分支中,您不会更改 iterator 值。在每次迭代中,条件 iterator._next is not None(来自 while 循环)和 if iterator._element == x: 都是 True(因为 iterator 包含相同的值)。然后你得到无限循环。尝试在 then 分支的末尾添加 break