求助,用递归去反转链表

2018-10-18 09:15:18 +08:00
 raingorain

小弟最近在学习算法和数据结构,奈何经常搞不懂递归的问题,也查阅了不少资料,但还是没搞懂用递归去反转链表

所以发了这个贴请教一下 v2 上面的大佬,谢谢大家啦

下面是从 leetcode 看到的 solution

class Solution:
    def reverseList(self, head):
        if not head or not head.next:
            return head
        
        new_head = self.reverseList(head.next)
        next_node = head.next    #        head -> next_node 
        next_node.next = head    #        head <- next_node 
        head.next = None         # [x] <- head <- next_node 
        return new_head

不能理解的地方是,返回最后一个的节点指针时候这三行代码的意思

next_node = head.next 
next_node.next = head 
head.next = None
5479 次点击
所在节点    编程
48 条回复
bucky
2018-10-18 20:03:08 +08:00
@reus 我觉得你这种阅读理解能力低下的人没资格说话
bucky
2018-10-18 20:06:19 +08:00
@reus 一个小问题错了都不敢承认,你真是男人呦,佩服
bucky
2018-10-18 20:10:00 +08:00
@loryyang 一个连递归展开都不清楚,不清楚反转链表的执行从后面还是从前面开始的人,你觉得他说的是对的,那你们好好交流一下
loryyang
2018-10-18 20:18:24 +08:00
chengluyu
2018-10-18 20:24:42 +08:00
reverse [] = []
reverse (x:xs) = reverse xs ++ [x]
bucky
2018-10-18 20:37:07 +08:00
@loryyang 你想表达什么,一个错误的答案的有人点赞,还有你这样的人支持,纠正一下错误不是无意义的争论
bucky
2018-10-18 20:39:57 +08:00
@loryyang 说真的,你们两个应该交个朋友,没理可说了就去翻别人的记录,你们两个这么像不交朋友可惜了,当然可能就是一个人呀,哈哈
icedx
2018-10-18 20:58:06 +08:00
写递归的时候最重要的是头脑清晰
而且一般能跑通(不 SF) 就能正常工作

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

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

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

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

© 2021 V2EX