怎么样给人解释清楚这个问题- Python 链表相关

2018-04-20 14:04:58 +08:00
 abcyuxue123

拆分链表:

class ListNode(object):
    def __init__(self, x):
        self.val = x
        self.next = None



mid = # find the middle node of linked list

l1 = head
l2 = mid.next
mid.next = None

这个时候 l1 指向链表前半部分,l2 指向链表后半部分,并且链表已经断开为两条。还是比较容易理解。

被问“可是 mid.next 之前指向的是后半部分链表,为什么把它设置为 None 不会影响后半部分链表,为什么 l2 不会变成 None ?“

要把这里的全理解成指针,l2 指向的这个 node 带着所有后半部分链表,而 mid.next 也是指针,它们是存在不同位置的指针,l2 是我们新开辟的位置,但一开始 l2 和 mid.next 指向的是同一个 node,我们更改 mid.next 的指向并不会影响 l2 的指向。

大佬们还有什么建议的好的解释么?

1959 次点击
所在节点    Python
5 条回复
fusae
2018-04-20 14:27:19 +08:00
自己画个图出来,一清二楚。mid.next 指向下一块,l2 也指向下一块。mid.next 为 None 跟下一块在不在一毛钱关系都没有啊
wizardoz
2018-04-20 14:50:57 +08:00
b = 100
a = b
b = 0

b 的值已经赋值给 A 了,现在 b 再赋值自然不会影响 a
jmc891205
2018-04-20 16:08:41 +08:00
mid.next 和 l2 是对同一个对象的不同引用 改变其中一个并不会影响另一个
abcyuxue123
2018-04-20 17:33:24 +08:00
感谢各位,最终画了个图,再理了理引用类型

差不多解释通了
e9e499d78f
2018-04-20 17:39:54 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/448449

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX