反转链表LeetCode206

简介: 反转链表LeetCode206

反转链表LeetCode206

反转一个单链表

示例:

输入: 1->2->3->4->5->NULL

输出: 5->4->3->2->1->NULL


解题方法分为递归法和迭代法。
其中递归法比较容易理解;


用ListNode设出来的的是节点

思路:借助三个节点,分别是空指针(作用就是作为一个中间值,没有其他意义),另外两个就是连着的指针,从头开始走。

注意:他们三个位置是连着的


假设三个节点分别为:0,1, 2, 3

文字描述:

先做排除空值的情况,0是空值,1,2,3都是有值的。将1指向0,然后将1的值赋给0,这时候1指向0,断开之前的1指向2,原来的一条链现在形成两个单独的链,然后使这三个节点整体向后移动一个单位

2021013020472399.png


继续刚才的操作,最后全部都会反转过来,不满足循环条件自己停止,这时候0这个空节点在最前面,打印输出即可

20210130204741216.png


代码实现:

class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode dummy = new ListNode();
        ListNode prev = null;
        while( head != null){
        ListNode next = head.next;
            head.next = prev;
            prev = head;
            head= next;
       }
       return prev;
    }
}


相关文章
|
6月前
|
算法
LeetCode刷题---19. 删除链表的倒数第 N 个结点(双指针-快慢指针)
LeetCode刷题---19. 删除链表的倒数第 N 个结点(双指针-快慢指针)
|
6月前
【移除链表元素】LeetCode第203题讲解
【移除链表元素】LeetCode第203题讲解
|
5月前
|
存储 SQL 算法
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
|
5月前
|
存储 SQL 算法
LeetCode 题目 86:分隔链表
LeetCode 题目 86:分隔链表
|
5月前
|
存储 算法 Java
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
53 2
|
6月前
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点.
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点
53 1
|
5月前
|
算法
【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表
【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表
|
5月前
|
存储 SQL 算法
LeetCode 83题:删除排序链表中的重复元素【面试】
LeetCode 83题:删除排序链表中的重复元素【面试】
|
5月前
|
存储 SQL 算法
LeetCode 题目 82:删除排序链表中的重复元素 II
LeetCode 题目 82:删除排序链表中的重复元素 II
|
5月前
|
算法 数据挖掘 Python
LeetCode题目25 hard:K个一组翻转链表 【分治策略 Python】
LeetCode题目25 hard:K个一组翻转链表 【分治策略 Python】