老师 在合并两个有序链表的时候 cur = root

来源:4-5 Python数据结构常考题之链表

码农小杨

2019-03-21

class Solution:
    def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
        root = ListNode(None)
		# 这进行了赋值操作
        cur = root

        while l1 and l2:
            if l1.val < l2.val:
                node = ListNode(l1.val)
                l1 = l1.next
            else:
                node = ListNode(l2.val)
                l2 = l2.next
            cur.next = node
            cur = node

        cur.next = l1 or l2
		
		# 这里的root 为什么没有随着 cur变化
        return root.next

老师 这里我有点不明白 为什么 上面的赋值操作完成之后 root 没有随着cur 的变化而变化 始终是创建的空node

写回答

1回答

PegasusWang

2019-03-21

之前的视频是有讲解过什么是变量、什么是对象的。 

一开始你创建一个 ListNode节点对象,然后让 root 指向它。之后的赋值操作 cur = root,让 cur 和 root 都指向了这个变量。

//img.mukewang.com/szimg/5c93b1b60001288511280666.jpg


之后每次创建一个新的节点,都让 cur 前移了。但是 root.next 一直指向的是你的第一个头结点,没有被改变过。


0
2
码农小杨
是我对变量的引用理解不深刻 谢谢老师
2019-03-22
共2条回复

Python工程师面试宝典 一线大厂资深面试官亲授

Python工程师面试必看,资深面试官亲授,倍增面试成功率

1015 学习 · 92 问题

查看课程