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
。
哦,这很有道理谢谢你! – DecafOyster208