【发布时间】:2020-05-09 23:57:21
【问题描述】:
代码如下。我从概念上理解循环结束是因为最终节点的 self.next = None,但我们正在检查 node != None 和 type(node5) 返回 __main__.LinkedListNode,而不是 None。那么node != None如何返回False,结束while循环呢?
class LinkedListNode():
def __init__(self,value):
self.value = value
self.next = None #This is the next point, is initially None
def traverseList(self):
node = self #Start at the Head Node
while node != None:
print(node.value) #Access the node value
node = node.next #Move to the next link in the list
#Create nodes for list
node1 = LinkedListNode('Mon')
node2 = LinkedListNode('Tues')
node3 = LinkedListNode('Wed')
node4 = LinkedListNode('Thurs')
node5 = LinkedListNode('Fri')
node1.next = node2
node2.next = node3
node3.next = node4
node4.next = node5
node1.traverseList()
type(node5)
【问题讨论】:
-
找到答案了吗?正如@CDJB 所说,问题在于node5 的
next是None,并且您尝试将条件应用于None。为避免这种情况,在您的for循环中,一旦遇到具有next或None的节点,您可以将if node.next is None: break置于循环之外。
标签: python python-3.x algorithm linked-list nodes