建立节点链?

问题描述

我有一个Node类。然后,我正在构建一个节点链。 它们通过self.prev_node和self.next_nodes相互连接, 还有Chain:self.last拥有到链的最后一个元素的链接。 我正在使用类似的方法添加新节点:

class Node(object):

def __init__(self,next_nodes=[],prev_node=None):
    self.next_nodes = next_nodes
    self.prev_node = prev_node


class Chain:

def __init__(self):
   self.start = Node()
   self.last = self.start 

def add_node(self,node):
   node.prev_node = self.last
   self.last.next_nodes.append(node)
   self.last = node

问题是,如果我添加几个节点:

c.start.next_nodes
[Node:2,Node:3,Node:4]

c.start.next_nodes[0].next_nodes
[Node:2,Node:4]

应该是:

c.start.next_nodes
[Node:2]


c.start.next_nodes[0].next_nodes
[Node:3]

由于某种原因,next_nodes列表似乎重复/相同。

我做错了什么?

解决方法

您要在 init 中传递可变的[[]]作为参数。

因此,您创建的每个节点都指向相同的内存位置,因此以所有相同的“ next_nodes”结尾。