我尝试编写一个带有三个参数的函数:链表,值和新值。该函数的目的是在链表中的值之后添加新值。这是我的职责。
def addAfter(lis, value, newValue):
tracker = lis
while tracker != None:
if tracker['data'] == value:
newNode = {'data':newValue, 'next': tracker['next']}
tracker['next'] = newNode
break
else:
tracker = tracker['next']
出于某种原因,我无法通过此功能执行任何操作。它不会改变列表。我想知道是否有人可以告诉我我做错了什么。
答案 0 :(得分:1)
问题可能在于您如何定义初始节点或列表。例如,以下代码适用于Python3.4
def addAfter(lis, value, newValue):
tracker = lis
while tracker != None:
if tracker['data'] == value:
newNode = {'data':newValue, 'next': tracker['next']}
tracker['next'] = newNode
break
else:
tracker = tracker['next']
node1 = {'data':3,'next':None}
addAfter(node1,3,4)
print(node1)
print(node1['next'])
此输出
{'next': {'next': None, 'data': 4}, 'data': 3}
{'next': None, 'data': 4}
正如我们所期望的那样。所以这里有几种可能性
尝试对每个测试进行测试,如果没有完成,请告诉我们。如果没有,请提供更多的上下文,即中断明显的场景
答案 1 :(得分:0)
您可以添加一个新类,例如:
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
然后使用en_Knight的代码,否则,代码将难以阅读