剑指 Offer 24. 反转链表【链表】
admin
2024-01-25 05:44:06
0

难度等级:简单

 上一篇算法:

剑指 Offer 06. 从尾到头打印链表【链表】

力扣此题地址:

剑指 Offer 24. 反转链表 - 力扣(LeetCode)

1.题目:反转链表

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

2.解题思路:

两种方式:1.定义反转头来实现    2.递归方式实现(比较难懂)

1.定义反转头实现:

思路:先创建一个反转头结点,然后将正序链表中的结点从前到后依次放入反转链表中,
//     同时,每次将结点放入反转链表都是插入到第一个结点,与反转头节点直接相连,
//     这里用循环逐个插入,最后将现有的头结点指向反转后的第一个结点即可。

2.递归方式实现(比较难懂)

思路:递归反转就是从原链表的第一个存储节点开始,依次递归调用反转每一个结点,
//     直到把最后一个反转完毕,真个链表就反转完毕了。

3.代码实现:

1.反转头实现:

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) { val = x; }* }*/
class Solution {public ListNode reverseList(ListNode head) {ListNode pre = null;ListNode cur = head;ListNode next = null;while(cur != null) {next = cur.next;cur.next = pre;pre = cur;cur = next;}return pre;}
}

2.递归方式:

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) { val = x; }* }*/
class Solution {public ListNode reverseList(ListNode head) {// 寻找递归终止条件// 1、head 指向的结点为 null // 2、head 指向的结点的下一个结点为 null // 在这两种情况下,反转之后的结果还是它自己本身if( head == null || head.next == null)  return head;// 不断的通过递归调用,直到无法递归下去,递归的最小粒度是在最后一个节点// 因为到最后一个节点的时候,由于当前节点 head 的 next 节点是空,所以会直接返回 headListNode cur = reverseList(head.next);// 比如原链表为 1 --> 2 --> 3 --> 4 --> 5// 第一次执行下面代码的时候,head 为 4,那么 head.next = 5// 那么 head.next.next 就是 5.next ,意思就是去设置 5 的下一个节点// 等号右侧为 head,意思就是设置 5 的下一个节点是 4// 这里出现了两个 next// 第一个 next 是「获取」 head 的下一节点// 第二个 next 是「设置」 当前节点的下一节点为等号右侧的值head.next.next = head;// head 原来的下一节点指向自己,所以 head 自己本身就不能再指向原来的下一节点了// 否则会发生无限循环head.next = null;// 我们把每次反转后的结果传递给上一层return cur;}
}

参考单链表里的反转链表(1.用反转头实现 2.用递归实现):

单链表的基本操作

相关内容

热门资讯

微软安卓系统叫什么,Windo... 你知道吗?在科技界,微软这个巨头最近可是搞了个大动作,竟然把目光投向了安卓系统!没错,就是那个我们日...
安卓系统没有最近任务,揭秘无最... 你是不是也遇到了这个问题?安卓系统里怎么就没有“最近任务”这个功能呢?别急,让我来给你详细说说这个事...
安卓系统怎么拒聊天,安卓系统聊... 你是不是也和我一样,有时候手机里聊天软件的消息太多,让人头都大了?别急,今天就来教你怎么在安卓系统里...
下载工资软件安卓系统,高效便捷... 你有没有想过,每个月的工资一到手,是不是就感觉整个人都轻松了呢?但是,你知道怎么轻松地管理你的工资吗...
下载灰灰影音安卓系统,畅享高清... 你有没有想过,一部手机,一部电脑,就能让你随时随地享受高清电影、热门剧集的乐趣?没错,这就是我们今天...
安卓系统是不是中国,中国智慧与... 你有没有想过,那个陪伴你每天刷手机、玩游戏、办公的安卓系统,它是不是中国的“孩子”呢?这个问题听起来...
电脑如果安装安卓系统,探索安卓... 你有没有想过,如果家里的电脑突然决定要换换口味,不再坚守Windows的阵营,而是拥抱安卓系统呢?想...
安卓手机升级苹果系统,体验全新... 你有没有想过,你的安卓手机突然间变成了苹果的忠实粉丝,想要体验一番iOS系统的魅力呢?这可不是天方夜...
安卓系统短信不通知,享受宁静 你是不是也遇到了这个问题?安卓系统短信不通知,是不是让你抓狂?别急,今天就来给你详细解析一下这个让人...
夏普电视非安卓系统,非安卓系统... 亲爱的读者们,你是否曾对夏普电视的非安卓系统感到好奇呢?今天,就让我带你一探究竟,揭开这个神秘面纱背...
安卓系统43适配软件,软件升级... 你有没有发现,你的安卓手机最近是不是有点儿“水土不服”?别急,别急,让我来给你揭秘为什么你的安卓系统...
安卓系统有车载系统吗吗,智能驾... 你有没有想过,当你坐在车里,享受着旅途的悠闲时光,手机上的安卓系统是不是也能派上用场呢?没错,我就要...
安卓8.1系统解锁方法,畅享自... 你有没有想过,你的安卓手机里隐藏着无数的小秘密?比如,解锁安卓8.1系统,就能让你的手机焕发出全新的...
安卓系统怎么打开邮件,安卓系统... 你有没有想过,每天那么多邮件,怎么才能快速打开它们呢?尤其是当你用的是安卓系统手机的时候。别急,今天...
封闭安卓系统安装软件,一步到位... 你有没有想过,为什么你的安卓手机里有些软件只能通过官方渠道安装呢?今天,就让我带你一探究竟,揭开封闭...
小米mipad升级安卓系统,解... 你有没有发现,最近小米Mipad的安卓系统升级可是个大热门呢!这不,我就迫不及待地来和你聊聊这个话题...
哪个安卓系统体验好,揭秘安卓系... 你有没有想过,手机里的安卓系统就像是个大厨,不同的版本就是不同的拿手好菜,有的让你回味无穷,有的却让...
安卓系统开发测试,全方位技术解... 你有没有想过,那个陪伴你每天刷手机、玩游戏、办公的安卓系统,是怎么从无到有,一步步成长起来的呢?今天...
安卓系统怎么查配置,轻松掌握设... 你有没有想过,你的安卓手机里藏着多少秘密?别小看这些配置信息,它们可是了解你手机性能的“小侦探”呢!...
pve下安装安卓系统,PVE环... 你有没有想过,在你的PVE服务器上安装一个安卓系统呢?听起来是不是有点酷炫?想象你的服务器不仅能够运...