我是编程的初学者,我正在尝试理解以下代码:
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def deleteNode(self, node):
node.val = node.next.val
node.next = node.next.next
我对代码的直觉如下: 我知道该节点是对链表中元素的引用,而node.next是指向下一个节点的指针。我也理解node.val将当前节点的值设置为下一个节点的值。
的目的究竟是什么? node.next = node.next.next?
答案 0 :(得分:3)
想象一下以下链接列表节点(其中n2是您要删除的节点)
... -> n1 -> n2 -> n3 -> ...
node -^ ^ ^- node.next.next
|
node.next
因此,如果你设置node.next = node.next.next
,你会得到这个:
n2
|
v
... -> n1 -> n3 -> ...
node -^ ^
|
node.next
因为现在一旦函数返回就没有任何东西引用它,它将被垃圾收集。
答案 1 :(得分:2)
NodeA - > NodeB - > NODEC
所以目前NodeA.next是NodeB
通过分配NodeA.next = NodeA.next.next我们得到NodeA.next = NodeB.next,这使得
NodeA.next = NodeC
所以链现在是
NodeA - > NODEC
答案 2 :(得分:1)
这意味着删除了指向下一个节点的链接,并且此节点链接到next.next节点,这意味着删除了下一个节点,并将其值替换为此节点值。 例如,我们有以下列表:
1->2->3->4
1.next(2) = 1.next.next(3)
所以列表更新为:
1->3->4