python - 调用链表函数

标签 python class linked-list

我有一个链表堆栈。当我调用 list.push() 时它工作正常,但当我在函数 init() 中执行相同操作时它什么也不做。可能是什么问题?

class Node:
    def __init__(self, data):
        self.data = data
        self.nextNode = None

    def __str__(self):
        return str(self.data)

class linkedList:
    def __init__(self):
        self.head = None
        self.end = None

    def isEmpty(self):
        return self.head == None

    def push(self, item):
        new_node = Node(item)
        if not self.head:
            self.head = self.end = new_node
        else:
            new_node.nextNode = self.head
            self.head = new_node

#doesnt work
def init():
    list = linkedList()
    list.push("a")

init()
print(list.isEmpty()) #True

#works
list = linkedList()
list.push("a")
print(list.isEmpty()) #False

最佳答案

在函数外部,您无法访问在函数内部创建的本地对象。返回它使其可用:

def make_list():
    my_list = linkedList()
    my_list.push("a")
    return my_list

my_list = make_list()
print(my_list.isEmpty())

不要为您的对象使用名称 list,因为它会遮盖内置的 list

关于python - 调用链表函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33846163/

相关文章:

Java 类 : I need to add a new field of type String to a class. 我应该扩展(创建新的派生类)还是简单地添加新字段?

c - 如何创建和访问二维链表元素

c - 如何实现【复制数组到链表】功能?

python - 我想从我的 Pandas 数据框创建一个多嵌套的 json

python - 在 OSX 中安装 QGIS 3.2 - 现有的 Python 2.7 不允许我

python - 当我将 displacy.render(doc, style ="dep") 的输出保存到 svg 文件时,出现 TypeError : write() argument must be str, not None

python - 如何使用带有线程的MYSQL select查询而不重复select查询结果?

c++ - 不了解指针和类在此示例中如何协同工作

java - 如何向标准java类添加方法

c++ - 为什么迭代链表中的节点不是 C++ 中的赋值?