V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
abcyuxue123
V2EX  ›  Python

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

  •  
  •   abcyuxue123 ·
    KrisYu · 2018-04-20 14:04:58 +08:00 · 1967 次点击
    这是一个创建于 2412 天前的主题,其中的信息可能已经有所发展或是发生改变。

    拆分链表:

    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 的指向。

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

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

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

    差不多解释通了
    e9e499d78f
        5
    e9e499d78f  
       2018-04-20 17:39:54 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1057 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:17 · PVG 06:17 · LAX 14:17 · JFK 17:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.