2016-02-29 1 views

ответ

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] 

Вы также мог бы использовать словарь, и использовать номер узла в качестве ключа. Но в этом случае список кажется более естественным.

Но зачем вы хотите это делать? Вы могли бы просто использовать Python list от Node s. Создание списка узлов можно легко сделать с помощью понимания списка. Перебор списка затем может быть сделано с простым циклом:

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

for node in nodes: 
    print(node.payload)