反转链表超简单!3步搞定力扣206题
今天小编要跟大家一起学习的是力扣网站上第206道算法题 名字叫反转链表 小编会把自己的解题思路和作图过程一一给大家展示 希望对大家会有所帮助。
一、原题展示
题目很好理解就是要把原链表反转一下输出出来。
二、思路讲解
这里小编设了三个变量L1 L2 L3 。L1设为NULL L2指向原链表的头结点 L3指向L2的下一个结点为了手牵手。读到这里相信大家还是会有很多疑惑 接下来我会以图文搭配的方式为大家展示。
这里我们就完成了前期准备工作。L3在哪里?别着急我会把它放到循环里因为它要时时刻刻的连着L2的下一个结点。
L3的作用来了它的目的就是把L2->next的这个值先记住以防待会儿要改L2->next的地址时原先的值找不到了被覆盖了。
现在我们就可以放心大胆的把L2->next的值传给L1了。此刻它就变为NULL了就相当于我们目标链表的尾结点了。
接下来就是把L2的位置传给L1,L3的位置传给L2。之后就进入while循环一直往下走。注意!这里小编踩过一个坑 希望大家直接跳过去。就是顺序不能颠倒 必须先传L2再传L3 不然L1的位置就直接跳到L3了。到这里我们的目的就已经快要达成了。
到这里我们的反转链表就已经完成了 这里新的表头就是L1 L2就从原先的表头变为NULL这里完全就可以让L2作为我们循环结束的标志 只要L2为NULL就跳出循环。
当然这里还有一个特殊情况 当原链表为NULL时 反转链表和原链表相同 直接返回原链表就可以啦。
三、代码展示
希望这道算法题小编的思路对大家会有所帮助 接下来小编会持续为大家带来更多精彩内容。
