Python可以在循环中生成节点吗?

2024-05-12 23:47:50 发布

您现在位置: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。。。节点9

先谢谢你!在


Tags: innonenodeformake节点deflink
2条回答

不,但您可以使用列表:

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]

您也可以使用字典,并使用节点号作为键。但在这种情况下,一份清单似乎更自然。在

但你为什么要这么做?您也可以使用Nodes的Pythonlist,通过列表理解可以轻松地创建节点列表。然后可以使用一个简单的for循环遍历列表:

^{pr2}$

你可以使用字典和/或列表来完成你想要达到的目标。在

但是,如果为了学习目的而尝试测试一些数据结构,那么可以创建一个类节点并对其进行操作。在

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

相关问题 更多 >