创建Python列表/节点类

3 投票
1 回答
38273 浏览
提问于 2025-04-17 16:09

作为练习,我想自己创建一个节点/列表的类。不过我不太明白怎么把一个节点添加到列表里……这是我的代码:

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

1 个回答

7

你需要找到最后一个没有 .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.nextEl 会在 self.last 之前被设置为 newNode

关于你代码的一些风格建议:

  • 使用 is Noneis not None 来检查一个标识符是否指向 None(它是一个单例)。
  • 在Python中不需要访问器;直接引用属性就可以了。
  • 除非你使用的是Python 3,否则要通过继承 object 来使用新风格的类:

    class Node(object):
        # ...
    

撰写回答