python双向链表 - insertAfter节点

问题描述:

我创建一个python类来实现一个双向链表。我有一个独立的类为DLL节点本身和列表的类。 这是我的类为DLL节点: 类DLLNode:python双向链表 - insertAfter节点

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它不说别的这就是为什么即时通讯困惑。 将不胜感激任何帮助:)

在循环中then分支

while iterator._next is not None: 

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

+0

哦,这很有道理谢谢你! – DecafOyster208