我正在使用Python 3.6.3。我正在尝试在Python中编写一个简单的链接列表。这里是我的代码:Python - 链接列表节点比较需要额外的解引用
class Node(object):
"""Represents a node within a linked list"""
def __init__(self, data, next=None):
self.stuff = data
self.next = next
def __str__(self):
return str(self.stuff)
class LinkedList(object):
def __init__(self):
self.head = None
self.size=0
def append(self, data):
if not self.head:
self.head = Node(data)
return
else:
n=self.head
while n.next:
n = n.next
new_node = Node(data)
n.next = new_node
return
def insertAfter(self, data, newNode):
if not self.head:
return
else:
n=self.head
while n and n.stuff != data:
n = n.next
if not n:
return
else:
newNode.next = n.next
n.next = newNode
return
def printlist(self):
if not self.head:
print("List is empty")
return
else:
n = self.head
while n:
print(str(n))
n = n.next
return
ll = LinkedList()
ll.append(Node("1"))
ll.append(Node("2"))
ll.append(Node("3"))
ll.insertAfter("2", Node("2.5"))
ll.printlist()
我希望它打印:
1
2
2.5
3
但是,相反它打印:
1
2
3
调试后,我意识到,改变该线路insertAfter方法:
while n and n.stuff != data:
至:
while n and n.stuff.stuff != data:
打印预期输出。 我不明白为什么它这样做。 请帮忙。 谢谢
我现在感觉很傻!我在玩弄东西的时候已经做出了这个改变,并且已经注意到我已经在追加方法中进行了改变。 谢谢。 –