python - 我的链接列表出了什么问题?

标签 python linked-list

我正在尝试为节点创建一个类(它应该是一个队列系统)以在另一个程序中导入。我知道另一个程序工作正常,因为它在导入使用相同函数名称的另一种类型的队列时工作正常(基于Python的常规列表)。然而,对于这种队列类型,我似乎永远无法让它工作。我确信我的代码存在很多问题(因为我收到了各种各样的错误消息),并且我想了解一些关于我应该更改的内容。

这是该类的代码:

class Node():
    def __init__(self, v=None, n=None):
        self.item=v
        self.next=n

    lastnode=__init__

    def put(self, v):
        Node.lastnode.next=self
        self.item=v
        self.next=None
        Node.lastnode=Node.lastnode.next

    def get(self):
        if Node.isempty(self):
            return None
        out=Node.__init__.next
        Node.__init__.next=out.next
        out.next=None
        return ut.item

    def isempty(self):
        if Node.lastnode==Node.__init__:
            return True
        else:
            return False

put 函数的作用是将新项目/节点放在队列的最后。

get 函数的作用是从队列中删除第一个节点并返回其项目。

isempty 函数用于检查队列是否为空。

请大家批评指正。

最佳答案

您的主要问题是您尝试使用单个类来解决实际上需要两个类的问题。链表涉及两种项目:节点和列表结构本身。节点只“知道”两件事:它包含的数据和它链接到的下一个节点的身份。列表对象管理对一组链接节点的访问。通过尝试将两个角色组合在一个类中,您将无法实现列表。例如,考虑一下您的类如何管理多个节点。您似乎试图通过使用列表级数据的类属性(例如头节点的标识)来解决这些困难,但即使这可以工作,您也只能工作一次只有一个列表实例。

除此之外,您的代码还存在一些基本语法问题。例如,lastnode=__init__ 行不会调用__init__;调用语法为 lastnode=__init__(),但您不能在类定义的主体中执行此操作。

这是一个您可以研究的简单实现:

class Node(object):

    def __init__(self, value=None, next=None):
        self.value = value
        self.next = next

class List(object):

    def __init__(self):
        self.head = None

    def put(self, value):
        new = Node(value)
        new.next = self.head
        self.head = new

    def get(self):
        if self.is_empty():
            return None
        old = self.head
        self.head = old.next
        return old.value

    def is_empty(self):
        return self.head is None

关于python - 我的链接列表出了什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22358360/

相关文章:

python - 与 celery 正在进行的任务交互

java - 在 Java 中使用带有链表的迭代器

c++ - 如果要删除的项目不在列表中,如何返回 `false`

c - 无法打印链表

java - 插入LinkedList,然后按ID号升序排序

javascript - 使用 Python 从 Arduino 读取串行数据

python - 损坏的 DAG : No module named 'airflow.contrib.gsc_to_gcs'

python - 如何找到与多边形的垂直距离?

Python:如果项目不是数字则追加到列表

c - 如何释放内部有结构单元格的链表?