Вот определение класса ListNote
в LeetCode
:
class ListNode(object):
def __init__(self, x):
self.val = x
self.next = None
Для кода:
result = ListNode(0)
#result = 0 -> None
result_tail = result
#result_tail = 0 -> None
result_tail.next = ListNode(1)
#result_tail = 0 -> 1 -> None
#result = 0 -> 1 -> None
result_tail = result_tail.next
#result_tail = 1 -> None
#result = 0 -> 1 -> None
result_tail.next = ListNode(2)
#result_tail = 1 -> 2 -> None
#result = 0 -> 1 -> 2 -> None
result_tail = result_tail.next
#result_tail = 2 -> None
#result = 0 -> 1 -> 2 -> None
Значения в комментариях взяты из моих предположений.Я не могу понять, что шаг
result_tail = result_tail.next
result_tail = result
передается по ссылке, поэтому, когда result_tail
становится 1 -> None
, result
также должен становиться 1 -> None
.Почему result
все еще держит 0 -> 1 -> None
?И когда result_tail
становится 1 -> 2 -> None
, почему result
расширяет свой хвост до 0 -> 1 -> 2 -> None
?
result_tail = result_tail.next
- это что-то вроде
result_tail = result.next.next
Может кто-нибудь сказать мне логикуздесь