其他分享
首页 > 其他分享> > LC.206 反转单链表 解题笔记

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;

    }
}

标签:pre,tmp,head,单链,指向,链表,解题,LC.206,节点
来源: https://www.cnblogs.com/JiShi2001/p/16265162.html