下面是打印链表的代码
def printlinkedlist(root):
if root==None:
return
print(root.data)
printlinkedlist(root.next)
假设链表包含
1-2-3-4-5-6-7-8
通过调用 printlinkedlist(root) --------->它给出 put as----->1-2-3-4-5-6-7-8
现在,我调用另一个函数
def linkedlist2(root):
if root==None:
return
print(root.data)
if root.next==None:
root.data=50
return
linkedlist2(root.next)
这基本上使最后一个元素值为50。当我调用printlinkedlist(root)
它产生的函数时1-2-3-4-5-6-7-50
疑惑一:由于原始根中的值改变了,根是值传递还是引用传递?
如果是这样,希望它通过引用传递
def linkedlist3(root):
if root==None:
return
print(root.data)
if root.next==None:
root=None
return
linkedlist3(root.next)
这基本上使最后一个节点为None.ie,当调用linkedlist(root)时1-2-3-4-5-6-7-50
输出应该像(因为50被设为None)。1-2-3-4-5-6-7
这不是发生的事情。它产生相同的先前输出,即1-2-3-4-5-6-7-50
.
有人可以解释为什么没有产生我想要的输出,以及它是按值调用还是按引用调用???。