算法练习题(二)——反转链表

简介: 算法练习题(二)——反转链表

剑指 Offer 24. 反转链表

题目描述:

  定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点

例如(见代码):

 输入 [1,2,3]

 输出 [3,2,1]

解法:

思路一:迭代

 1. 迭代需要三个指针,previous(上一个),current(当前),next(下一个),分别按顺序指向三个节点

 2. 三个指针的初始化:previous指向空节点,current指向头结点head,next指向current.next

 因为current.next可能不存在,next在循环中定义,这样如果current为空就不会进入循环

 3. 迭代过程

  1.next指向current.next

  2.cur指向pre

  3.pre移动到cur位置

  4.cur移动到nxt位置

   null----1-------2-------3-------4-------5-----null

  prev cur  nxt

     prev cur  nxt(依次循环)

 4. 当cur为空时,返回pre

详细过程见图片:

ListNode 实体

class ListNode {
    int val;
    ListNode next;
    ListNode(int x) {
        val = x;
    }
}

解题代码

class Solution {
    public ListNode reverseList01(ListNode head) {
        ListNode previous = null;
        ListNode current = head;
        while (current != null) {
//            将 current 下面部分的复制一遍 然后赋值给了next
            ListNode next = current.next;
//            将previous 赋值给 current 下面的部分
            current.next = previous;
//            将current 赋值给 previous
            previous = current;
//            将 next 赋值给 current
            current = next;
        }
        return previous;
    }
//  测试
    public static void main(String[] args) {
        ListNode head = new ListNode(1);
        head.next = new ListNode(2);
        head.next.next = new ListNode(3);
        Solution24 solution24 = new Solution24();
        ListNode head01 = solution24.reverseList01(head);
        System.out.println(head01.val);
        System.out.println(head01.next.val);
        System.out.println(head01.next.next.val);
    }
}
相关文章
|
2月前
|
算法
【❤️算法笔记❤️】-每日一刷-19、删除链表的倒数第 N个结点
【❤️算法笔记❤️】-每日一刷-19、删除链表的倒数第 N个结点
79 1
|
2月前
|
算法 索引
❤️算法笔记❤️-(每日一刷-141、环形链表)
❤️算法笔记❤️-(每日一刷-141、环形链表)
53 0
|
2月前
|
算法
【❤️算法笔记❤️】-(每日一刷-876、单链表的中点)
【❤️算法笔记❤️】-(每日一刷-876、单链表的中点)
54 0
|
2月前
|
算法
【❤️算法笔记❤️】-每日一刷-23、合并 K 个升序链表
【❤️算法笔记❤️】-每日一刷-23、合并 K 个升序链表
36 0
|
2月前
|
存储 算法
【❤️算法笔记❤️】-每日一刷-21、合并两个有序链表
【❤️算法笔记❤️】-每日一刷-21、合并两个有序链表
112 0
|
1月前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之单双链表精题详解(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
1月前
|
存储 Web App开发 算法
2024重生之回溯数据结构与算法系列学习之单双链表【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构之单双链表按位、值查找;[前后]插入;删除指定节点;求表长、静态链表等代码及具体思路详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
2月前
|
存储 缓存 算法
经典算法之链表篇(三)
经典算法之链表篇(三)
|
2月前
|
算法
经典算法之链表篇(二)
经典算法之链表篇(二)
|
2月前
|
算法 索引
经典算法之链表篇
经典算法之链表篇

热门文章

最新文章