3种方法,3幅图,1个gif,把它讲的明明白白

Day14 作业总结

反转链表的方法:迭代和递归。

迭代法:

Step 1 先标记下这个节点

3种方法,3幅图,1个gif,把它讲的明明白白

Step 2 一个迭代步中,curNode 指向 preNode,便完成当前迭代步的反转

3种方法,3幅图,1个gif,把它讲的明明白白

Step 3 每次迭代,preNode 和 curNode 向前移动 1 步

3种方法,3幅图,1个gif,把它讲的明明白白

以上步骤归结为如下代码(代码来自我的星友 Leven):

3种方法,3幅图,1个gif,把它讲的明明白白

2 递归法

首先反转自 head.next 后的链表,node 此时指向翻转后链表的头部;最后将 head.next 节点链接到 head 节点,最后的最后将 head 节点的 next 域置为 None,因为 head 是终点了。

代码如下:

3种方法,3幅图,1个gif,把它讲的明明白白

3 尾递归

还有一位星友诚Slime提供了第二种递归思路,gif 演示如下:

3种方法,3幅图,1个gif,把它讲的明明白白

代码如下:

3种方法,3幅图,1个gif,把它讲的明明白白

Day 15 作业题

又是七天一周过去了,Day15 我们思考和讨论如下话题:

程序员一定要学算法吗,说出你为什么要学习算法? 

可以参考:https://www.zhihu.com/question/290268306

加入星球

加入星球,从零学程序员必备的算法,每天在星球内记录学习过程并打卡,超赞!

打卡 300 天,退还除平台收取的其他所有费用。

3种方法,3幅图,1个gif,把它讲的明明白白

长按二维码查看

阅读更多:

从 0 学算法第一周总结:1 万字 30 多幅图

Github 下载提速 50 倍的方法!

点个在看3种方法,3幅图,1个gif,把它讲的明明白白