创建列表/节点类Python

2024-06-07 09:52:24 发布

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

作为练习,我想创建自己的节点/列表类。无论如何,我不知道如何将节点添加到列表…下面是我的代码:

class Node:
    def __init__(self, value):
        self.element = value
        self.nextEl = None

    def getEl(self):
        return self.element

    def getNext():
        return self.nextEl

class List:
    def __init__(self, fnode):
        self.firstNode = fnode

    def add(self, newNode):

    def printList(self):
        temp = self.firstNode
        while (temp != None):
            print temp.element
            temp = temp.nextEl

Tags: 代码selfnone列表return节点initvalue
1条回答
网友
1楼 · 发布于 2024-06-07 09:52:24

您需要找到最后一个没有.nextEl指针的节点,并在那里添加该节点:

def add(self, newNode):
    node = self.firstNode
    while node.nextEl is not None:
        node = next.nextEl
    node.nextEl = newNode

因为这必须遍历整个列表,所以大多数链表实现还保留对最后一个元素的引用:

class List(object):
    first = last = None

    def __init__(self, fnode):
        self.add(fnode)

    def add(self, newNode):
        if self.first is None:
            self.first = self.last = newNode
        else:
            self.last.nextEl = self.last = newNode

因为Python从左到右分配给多个目标,self.last.nextElself.last之前设置为newNode

代码中的一些样式注释:

  • 使用is Noneis not None测试标识符是否指向None(它是一个单例)。
  • Python中不需要访问器;只需直接引用属性。
  • 除非这是Python 3,否则通过从object继承使用新样式的类:

    class Node(object):
        # ...
    

相关问题 更多 >

    热门问题