【发布时间】:2017-10-17 04:28:13
【问题描述】:
我正在使用 Python 3.6.3。我正在尝试用 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:
打印预期的输出。 我不明白它为什么这样做。 请帮忙。 谢谢
【问题讨论】:
标签: python linked-list