我正在尝试为Python上的链表编写一个add方法,但它的行为不符合预期。
class linkedlist:
def __init__(self):
self.item=None
self.next=None
def add(self,val):
self.next=self
self.item=val
但这不起作用。当我创建一个对象时:
myobj=linkedlist()
myobj.add(1)
myobj.add(2)
print(myobj.next.item)
给出 2,而不是我期望的 1。我哪里做错了?
我尝试查看在方法中用另一个相同类型的对象替换 self 对象是否安全?但这没有帮助。
我认为如果将节点类型和链表类型分开会更清楚:
class node:
def __init__(self, item):
self.item=item
self.next=None
class linkedlist:
def __init__(self):
self.tail = None
def add(self, node):
node.next = self.tail
self.tail = node
myobj=linkedlist()
myobj.add(node(1))
myobj.add(node(2))
print(myobj.tail.item, myobj.tail.next.item)
这是输出:
2 1
如果您想要相反的顺序,也请跟踪标题。