链表的错误实现

Wrong Implementation of LinkedList

我在使用以下代码段时遇到问题。我无法真正弄清楚为什么它不起作用,我们将不胜感激。这是一个非常非常简单的错误,我不明白:

class Node():
    def __init__(self, val = 0, next_node = None):
        self.val = val
        self.next = next_node

    def add_node(self, new_val):
        temp = self
        self.val = new_val
        self.next = temp

if __name__ == '__main__':
    u = Node(1)
    u.add_node(5)
    print(u.next.val)

打印 5 如果你写 u.next.next.next.val 它会一直打印 5,我想要的是 u.val = 5u.next.val = 1u.next.next = None

如果你添加一个新节点,你永远不会检查你是否在链表的中间,你只需更改当前节点值并让 if 引用自身作为下一个节点(=> 循环自指向列表)。这没有任何意义。

您需要:

  • 创建一个新节点,设置它的值并将它的next_node设置为你自己的self.next
  • 然后将您的self.next设置为新节点

def add_node(self, new_val):
    # self.next is either None or the remainder of your linked list
    new_node = Node(new_val, self.next)
    # insert as next node of yourself
    self.next = new_node

您必须在 add_node 中实例化一个新的 Node,然后将其设置为 selfnext