IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 力扣206.反转链表(Java解法) -> 正文阅读

[数据结构与算法]力扣206.反转链表(Java解法)

题目:给你单链表的头节点?head?,请你反转链表,并返回反转后的链表。

?这题反复做过好多次,这次将自己的思路总结后记录下来。

思路一:(双指针)

用双指针改变原链表中的指针的指向即可。初始化一个指针cur指向头结点head,初始化一个指针pre指向空。

ListNode cur = head;
ListNode pre = null;

其中cur负责遍历链表,而pre则负责指向链表反转后的头结点。如下图为整个迭代过程:

初始时pre指向null,cur指向head。如下图:

这里分为4步完成一次迭代:

(1)保存cur的下一个结点为temp;

            temp = cur.next;

(2)将cur的下一个结点指向pre;

            cur.next = pre;

到这里已经完成了第一个结点的反转。接下来是将pre和cue同时向后移动,准备下一步的迭代。

(3)pre指向cur;

            pre = cur;

(4)cur指向事先保存的结点temp,也就是向后移动一位的意思。

            cur = temp;

经过一次迭代后,链表的指针指向变为如下图所示:

?

到这里可以发现,仅仅是从图上来说,pre始终在cur的前面一个位置。实际上cur.next=pre。当cur为空时,说明已经迭代完整个链表,可得出迭代的终止条件为cur == null。

当整个链表迭代完后如下图:此时cur指向空,说明链表迭代结束。

?

具体的迭代代码为:

temp = cur.next;
cur.next = pre;
pre = cur;
cur = temp;

最后完整的代码为:

    public ListNode reverseList(ListNode head) {
        ListNode temp;
        ListNode pre = null;
        ListNode cur = head;
        while(cur != null){
            temp = cur.next;
            cur.next = pre;
            pre = cur;
            cur = temp;
        }
        return pre;
    }

这仅仅是其中的一种解法,还包括递归法。后续会补充!

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-07-21 21:45:58  更:2022-07-21 21:47:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:37:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码