【发布时间】:2019-09-20 18:52:09
【问题描述】:
我正在 Python3 中实现一个单独的 LinkedList。程序将“current_node”分配给“previous_node”,然后将“current_node”更改为“current_node.next”。我希望此更改也适用于“previous_node”,但事实并非如此。
class ListNode(object):
def __init__(self, val):
self.val = val
self.next = None
a = [7, 8, 11, 3]
fst_node, sec_node, thd_node, frt_node = ListNode(a[0]), ListNode(a[1]), ListNode(a[2]), ListNode(a[3])
fst_node.next = sec_node
sec_node.next = thd_node
thd_node.next = frt_node
current_node = sec_node
previous_node = current_node
print(previous_node, current_node)
current_node = current_node.next
print(previous_node, current_node)
【问题讨论】:
-
在进行最终分配之前,
current_node和previous_node都指向同一个对象。然后你让current_node引用另一个对象。前一个节点不受影响。 -
FWIW,你可以做
fst_node, sec_node, thd_node, frt_node = map(ListNode, a)
标签: python-3.x pass-by-reference singly-linked-list