在Python中将节点添加到链接列表

时间:2016-07-30 23:23:11

标签: python linked-list nodes

addToList()函数将值作为参数。值连续多次传递给addToList()函数。

def addToList(value):
    node = {}
    node["data"] = value
    node["next"] = None
    head = node

问题是:如何创建许多不同的节点?应将每个进入的值分配给一个节点。只有第一个节点应该等于head。截至目前,我正在创建一个节点,给它一个值,然后当下一个值进入时,我覆盖了我创建的节点,而不是创建一个新节点。每个新节点如何指向不同的[" next"]?如果我提前知道我的值,我可以手动编程每个节点。当我不知道我将拥有多少值时,我不明白如何生成新的和唯一的节点,并且它们被馈送到函数中。

2 个答案:

答案 0 :(得分:0)

有两种可能性(除非你想转向面向对象的代码,否则有第三种选择)。为简单起见,我假设我们在列表的前面(而不是末尾)添加元素。

全球范围

这意味着您当时只有一个列表

head = None
def addToList(value):
    global head
    head = {'value': value, 'next': head}

addToList(3)
addToList(5)
addToList(11)
print head

或使用实际列表:

actual_list = []
def addToList(value):
    global actual_list
    actual_list.append(value)

addToList(3)
addToList(5)
addToList(11)
print actual_list

两个参数

def addToList(value, head):
    return {'value': value, 'next': head}

head = None
head = addToList(3, head)
head = addToList(5, head)
head = addToList(11, head)
print head

再次使用实际列表

def addToList(value, actual_list):
    actual_list.append(value)

actual_list = []
addToList(3, actual_list)
addToList(5, actual_list)
addToList(11, actual_list)
print actual_list

答案 1 :(得分:-1)

您的问题的简单答案是让每个节点指向下一个正确的是将您的功能设为

def addToList(value):
    node = {}
    node["data"] = value
    node["next"] = None
    head[next] = node
    head = node

但是您需要在其他地方跟踪列表的真实头部,这样您可以稍后从头到尾遍历您的列表

这里是完整的例子

head={}
head["data"] = "start"
head["next"] = None
start = head
def addToList(value):
    global head
    node = {}
    node["data"] = value
    node["next"] = None
    head["next"] = node
    head = node

addToList("second")
addToList("third")

print start

它将打印此

{'data': 'start', 'next': {'data': 'second', 'next': {'data': 'third', 'next': None}}}