打印链接lis中的节点

2024-04-25 12:51:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我对编码非常陌生,我有一个基本问题,那就是用Python在双链接列表中打印一个节点。在

class Node():
    def __init__(self, key = None, prev = None, next = None):
        self.key = key
        self.prev = prev
        self.next = next

    def __str__(self):
        return ('[%s][%d][%s]' % (repr(self.prev), self.key, repr(self.next)))

显然,我还有一些列表类本身的代码。假设我有一个包含两个节点的双链接列表:

node1: key 21
node2: key 10
head --> node1 <==> node2

如果我打印(node1),我得到:

^{pr2}$

这正是我想要的。在

所以2个问题:

  1. “语法”或“混乱的代码”是否可以接受?

  2. 与其打印上一个和下一个节点的位置,我如何打印节点的名称,例如[node7][82][node9]

希望这有意义,谢谢你的帮助!在


Tags: key代码selfnone编码列表节点链接
1条回答
网友
1楼 · 发布于 2024-04-25 12:51:29

而不是必须为每个Node初始化一个self.name。您可以添加一个self.id,在每次创建时使用递增的静态counter初始化。在

第1步添加一个静态counter并初始化self.id属性

{{{cd8>从cd8}开始。在

class Node():
    counter = 0
    def __init__(self, key = None, prev = None, next = None):
        Node.counter += 1
        self.id = Node.counter
        self.key = key
        self.prev = prev
        self.next = next

第2步修改__str__函数,以获得prevnext的{}

self.prevself.next的名称仅在不显示时显示 None。在

使用self.__class__.__name__恢复类的名称。在

^{pr2}$

以下是一些示例:

>>> node1 = Node(21)
>>> print(node1)
[None][21][None]
>>> node2 = Node(10,node1)
>>> print(node2)
[Node1][10][None]
>>> node3 = Node(11,node2,node1)
>>> print(node3)
[Node2][11][Node1]

相关问题 更多 >