我们首先将是善良的,这一点最要紧,然后是正直的|

ASO2001

园龄:3年粉丝:0关注:2

LC.206 反转单链表 解题笔记

题目链接:

https://leetcode.cn/problems/reverse-linked-list/

笔记

想法

凡是涉及链表的题,最好画图后再做
本题是实现单链表的反转,比较简单。
要实现链表反转,我们可以将目的分解成

  1. 修改每一个节点的指针指向
  2. 将原本的首节点指向 Null ,原本的尾节点不再指向Null,而是指向上一个节点。

因此
假设现存链表为: 0 -->1 --> 2
需要一个变量先保存住 原本0节点的指向的1节点,而后再修改0节点的指向,来才能避免修改后1节点的丢失

做法

  1. 输入链表头结点 head
  2. 申请两个指针 pre 和 tmp, pre指针最初指向 null, tmp指针指向head节点的下一个节点
  3. while循环遍历链表
    a. 遍历条件为 指针head 不为null
    b. 记录当前节点head 的下一个节点tmp
    c. 将head节点指向他的上一个节点pre
    d. 先将pre节点后移至head
    e. 再将head节点至tmp
  4. 循环遍历后pre指针将停在链表的首节点
  5. 返回pre

代码

点击查看代码
class Solution {
    public ListNode reverseList(ListNode head) {
       ListNode pre = null;
       ListNode tmp = null;
       while(head != null){
           tmp = head.next;
           head.next = pre;
           pre = head;
           head = tmp;
       }
       return pre;

    }
}

本文作者:ASO2001

本文链接:https://www.cnblogs.com/JiShi2001/p/16265162.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   ASO2001  阅读(20)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起