链表反转【思路】

链表反转

  • 思路
    • 1. 将1->2->3->4->5这个链表中的2,3位置反转为1->3->2->4->5
    • 2. 将1->2->3->4->5这个链表中的2,3,4位置反转为1->4->3->2->5
      • 思路总结
    • 3. 将1->2反转为2->1
  • Java代码

将1->2->3->4->5这个链表中的3、4位置反转为1->4->3->2->5

思路

1. 将1->2->3->4->5这个链表中的2,3位置反转为1->3->2->4->5

创建两个指针pre,start。start代表反转链表中的第一个节点2,pre代表start前一个节点1。
在这里插入图片描述
将start.next指向4,pre.next指向3,再进行反转将3指向2,这样就完成了反转
在这里插入图片描述

2. 将1->2->3->4->5这个链表中的2,3,4位置反转为1->4->3->2->5

我们先按照上面的过程一样将2,3反转:
创建两个指针pre,start。start代表反转链表中的第一个节点2,pre代表start前一个节点1。
在这里插入图片描述
将start.next指向4,pre.next指向3,再进行反转将3指向2,这样就完成了反转
在这里插入图片描述
到这里都与上面一致,接下来就是要反转3,4:
即pre.next指向4,start.next指向5,接着4指向3就好了。
在这里插入图片描述
至此2,3,4的反转就完成了。

思路总结

start.next始终指向反转链表后面一个节点,pre.next始终指向反转链表内部最后一个节点。
start始终代表反转链表第一个节点,pre始终代表start前一个节点。
在这里插入图片描述

要反转2,3,4,5我们只需要依次反转2、3, 3、4, 4、5,就好了,每增加一个反转的节点只需要调整pre.next以及start.next的指向就行了,

3. 将1->2反转为2->1

这个链表从第一个开始,可以添加一个空的头节点
在这里插入图片描述
然后按照相同的方式:
pre.next指向2,start.next指向null,反转:2指向1
在这里插入图片描述

完成反转,直接返回空节点.next就是需要的链表了。

Java代码

  ListNode start=head;while(start.next!=null){ListNode cur=pre.next;ListNode next=start.next;pre.next=cur.next;start.next=next.next;//反转next.next=cur;    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/292600.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VM——计算流程执行耗时

1、计算同一个流程内的耗时,可以直接用“耗时统计”模块; 2、计算多个流程的运行耗时,需要使用“脚本”,利用C#函数计算耗时 首先,记录起始时间,保存到string类型的全局变量中, curTmStr Dat…

c++学习笔记-提高篇-STL标准模板库3(stack容器、queue容器以及list容器)

目录 Stack容器 一、Stack容器介绍 二、stack常用接口 三、栈的示例 queue(队列)容器 一、queue容器介绍 二、queue常用接口 三、queue示例 list容器 一、list容器介绍 二、list常用接口及示例 (一)list构造函数 &am…

HTML---盒子模型

文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 一.盒子模型概述 HTML中的盒子模型是一种用于描述和布局元素的概念。每个 HTML 元素都可以被表示为一个矩形的盒子,这个盒子包括四个部分:内容区域、内边距、边框和外边距…

【终极教程】Cocos2dx服务端重构(优化cocos2dx服务端)

文章目录 概述问题概述1. 代码混淆代码加密具体步骤测试和配置阶段IPA 重签名操作步骤2. 缺乏文档3. 缺乏推荐的最佳实践4. 性能问题 总结 概述 Cocos2dx是一个非常流行的跨平台游戏引擎,开发者可以使用这个引擎来开发iOS、Android和Web游戏。同时,Coco…

python的*和两个* *的区别,python中连续两个小于号

本篇文章给大家谈谈python两个等于号和一个等于号的区别,以及python为什么用两个等于号,希望对各位有所帮助,不要忘了收藏本站喔。 原帖地址见:[Python]-12-星号变量的特殊用法 在Python中,星号除了用于乘法数值运算和…

影响晶振频率稳定性的因素及解决方法

晶振作为电子设备中的核心元件,其频率稳定性对设备的性能和可靠性具有重要影响。晶发电子将介绍影响晶振频率稳定性的因素,并探讨相应的解决方法。 一、影响晶振频率稳定性的因素 频率:晶振的频率是影响其性能的最重要因素之一。在选择晶振…

Appearance-Motion Memory Consistency Network for Video Anomaly Detection 论文阅读

Appearance-Motion Memory Consistency Network for Video Anomaly Detection 论文阅读 AbstractIntroductionRelated WorkMethodExperimentsConclusions阅读总结 论文标题:Appearance-Motion Memory Consistency Network for Video Anomaly Detection 文章信息&am…

3分钟看懂如何给开源项目发起提案

背景 前段时间在使用 Pulsar 的 admin API 时,发现其中的一个接口响应非常慢: admin.topics().getPartitionedStats(topic); 使用 curl 拿到的响应结果非常大,同时也非常耗时: 具体的 issue 在这里:https://github.…

深圳鼎信|输电线路防山火视频监控预警装置:森林火灾来袭,安全不留白!

受线路走廊制约和环保要求影响,输电线路大多建立在高山上,不仅可以减少地面障碍物和人类活动的干扰,还能提高线路的抗灾能力和可靠性。但同时也会面临其它的难题,例如森林火灾预防。今天,深圳鼎信智慧将从不同角度分析…

FFmpeg 简单文档

一、播放器框架 常用音视频术语 容器/文件(Conainer/File):即特定格式的多媒体文件,比如mp4、flv、mkv等。媒体流(Stream):表示时间轴上的一段连续数据,如一段声音数据、…

华为设备VRP基础

交换机可以隔离冲突域,路由器可以隔离广播域,这两种设备在企业网络中应用越来越广泛。随着越来越多的终端接入到网络中,网络设备的负担也越来越重,这时网络设备可以通过华为专有的VRP系统来提升运行效率。通用路由平台VRP&#xf…

黑马点评09 秒杀功能总结

1.整体业务流程 1.1 redis判断流程 (单线程) 1.首先获取订单id和用户id,调用lua脚本进行redis操作,lua内包括 对购买资格/库存充足的判断 、 扣库存下单、发送订单消息到Stream。 2.Stream组成消息队列,有异常自动放到…