并在循环时制作单链表? 像这样:
def make_nodes(n):
head_node = Node(0,None)
for i in range(1,n):
node("i") = Node(i, None)
#somehow link them
以便命名节点: node1 node2 node3 ... node9
非常感谢提前!
答案 0 :(得分:1)
不,但您可以使用列表:
def make_nodes(n):
nodes = []
nodes.append(Node(0,None)) # head node
for i in range(1, n):
nodes.append(Node(i, None))
nodes[i-1].next = nodes[i] #somehow link them
return nodes
nodes = make_nodes()
head = nodes[0]
second = nodes[1]
last = nodes[-1]
您也可以使用字典,并使用节点编号作为密钥。但在这种情况下,列表似乎更自然。
但你为什么要这样做呢?您也可以使用list
的Python Node
。使用列表推导可以轻松地创建节点列表。然后可以使用简单的for循环对列表进行迭代:
nodes = [Node(i) for i in range(n)]
for node in nodes:
print(node.payload)
答案 1 :(得分:0)
您可以使用词典和/或列表来完成您想要实现的目标。
但是,如果您正在尝试测试某些数据结构以用于学习目的,您可以创建一个类Node并对其进行处理。
class Node(object):
__data = None
__ref_to_next = None
def __init__(self, d):
self.set_data(d)
def set_data(self, d):
self.__data = d
def set_ref_to_next(self, r):
self.__ref_to_next = r
def append_a_node(self, new_node):
cnode = self
while cnode.__ref_to_next != None:
cnode = cnode.__ref_to_next
cnode.set_ref_to_next(new_node)
def traverse(self):
cnode = self
while cnode.__ref_to_next != None:
print cnode.__data
cnode = cnode.__ref_to_next
def make_nodes(n):
head_node = Node(0)
for i in range(1,n):
new_node = Node(i)
head_node.append_a_node(new_node)
您可以使用追加功能填充链表模拟。