2016-02-29 40 views
-1

并在循环时创建单链表? 像这样: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

提前非常感谢!

回答

0

您可以使用词典和/或列表,你正在努力实现有什么。

但是,如果您试图测试某些数据结构以进行学习,您仍然可以创建一个类节点并对其进行处理。

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函数来填充链表模拟。

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] 

你也可以使用字典,并使用节点编号为重点。但在这种情况下,列表似乎更自然。

但你为什么要这么做?您可能只需使用Node的Python list即可。创建节点列表可以通过列表理解来轻松完成。遍历列表然后可以用一个简单的for循环来完成:

nodes = [Node(i) for i in range(n)] 

for node in nodes: 
    print(node.payload) 
相关问题