并在循环时创建单链表? 像这样:Python - 是否可以在循环中生成节点?
def make_nodes(n):
head_node = Node(0,None)
for i in range(1,n):
node("i") = Node(i, None)
#somehow link them
,这样的节点将被命名为: 节点1节点2节点3 ... node9
提前非常感谢!
并在循环时创建单链表? 像这样:Python - 是否可以在循环中生成节点?
def make_nodes(n):
head_node = Node(0,None)
for i in range(1,n):
node("i") = Node(i, None)
#somehow link them
,这样的节点将被命名为: 节点1节点2节点3 ... node9
提前非常感谢!
您可以使用词典和/或列表,你正在努力实现有什么。
但是,如果您试图测试某些数据结构以进行学习,您仍然可以创建一个类节点并对其进行处理。
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)
您可以使用append函数来填充链表模拟。
没有,但你可以使用一个列表:
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]
你也可以使用字典,并使用节点编号为重点。但在这种情况下,列表似乎更自然。
但你为什么要这么做?您可能只需使用Node
的Python list
即可。创建节点列表可以通过列表理解来轻松完成。遍历列表然后可以用一个简单的for循环来完成:
nodes = [Node(i) for i in range(n)]
for node in nodes:
print(node.payload)