在python上添加链表方法

问题描述 投票:0回答:1

我正在尝试为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 对象是否安全?但这没有帮助。

python class oop methods linked-list
1个回答
0
投票

我认为如果将节点类型和链表类型分开会更清楚:

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

如果您想要相反的顺序,也请跟踪标题。

© www.soinside.com 2019 - 2024. All rights reserved.