addToList()函数将值作为参数。值连续多次传递给addToList()函数。
def addToList(value):
node = {}
node["data"] = value
node["next"] = None
head = node
问题是:如何创建许多不同的节点?应将每个进入的值分配给一个节点。只有第一个节点应该等于head。截至目前,我正在创建一个节点,给它一个值,然后当下一个值进入时,我覆盖了我创建的节点,而不是创建一个新节点。每个新节点如何指向不同的[" next"]?如果我提前知道我的值,我可以手动编程每个节点。当我不知道我将拥有多少值时,我不明白如何生成新的和唯一的节点,并且它们被馈送到函数中。
答案 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}}}