单链表反转

参考:【图文解析】反转一个单链表
作者:giturtle
发布时间: 2019-03-18 15:26:38
网址:https://blog.csdn.net/qq_42351880/article/details/88637387?spm=1001.2014.3001.5501

目录

  • 例题描述
  • 思路
  • 代码实现

例题描述

反转一个链表

示例:

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

结构体定义

struct ListNode {int val;struct ListNode *next;
};

在这里插入图片描述

思路

先对原链表做头部切割,再对新链表做头插

  • 定义一个新head头指针,标记为newHead,将它初始为NULL,并非指向NULL,最后我们选择返回这个newHead指针作为新链表的头指针。
    在这里插入图片描述

  • 定义一个结点node作为"临时中转站",初始化与否并无大影响。

  • 进行循环遍历链表各个结点,判定head指针是否为空,即是否到达了原链表的结尾。如果不为空,说明还没有到达尾部。如果程序第一次运行就没有进入循环,说明传入了一个空链表,此时返回newHead新链表的头指针,同样返回NULL,这样处理也是合理的。

  • 以下开始逆序链表逻辑:在当前指针不为NULL时,先对原链表做头删操作,再对新链表做头插操作。即使用循环进行操作:

  • 让node指针指向传入函数链表的头指针head,两指针指向保持相同。
    在这里插入图片描述

  • 然后让head指针指向它的next结点,此时旧链表已经完成了头删操作。第一个结点已经被"切割"下来。接下来要做的就是对新链表进行头插操作,使结点放入新链表。

  • 让node指针的next下一个结点指向新链表的头指针newHead,完成结点的链接,即头插入新的链表中。然后更新newHead指向为新链表的头结点。进行下一次循环。
    在这里插入图片描述

在这里插入图片描述

  • 最终head指针指向了原链表的结尾,即为NULL,退出循环,此时新链表已经反转完毕,情况如图:
    在这里插入图片描述
  • 最终返回新链表头指针newHead即可。

代码实现

struct ListNode *reverseList(struct ListNode* head) {struct ListNode *newHead = NULL;struct ListNode *node;while (head != NULL) {//1. 对之前的链表做头部切割node = head;head = head->next;//2. 对新链表做头插node->next = newHead;newHead = node;}return newHead;
}

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

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

相关文章

Unity优化总览

CPU GC 序列化与反序列化,如protobuff,json解析String的频繁构造,拼接,如ToString()会生成字符串,Object.name会返回拷贝闭包和匿名函数,在闭包中调用外部变量时会创建临时class对象,匿名函数当做参数传入时,也会有内存开销有开销的函数,如Camera.main等,缓存一下Transform只存…

Rake的使用

Rake 是一套类似 Make 的 Builder 工具,让我们可以编写一些脚本任务,并且很方便设定各任务的相依性。在 Rails 之中就內建了许多 rake 指令,除了你已经使用过的 rake db:migrate 之外,还有例如:rake db:migrate rake d…

html5 usb调试,USB调试怎么打开 USB调试模式打不开怎么刷机

2016-04-25 16:58:28USB调试怎么打开 USB调试模式打不开怎么刷机标签:USB调试,刷机,recovery模式,卡刷【ROM之家】在手机很多应用使用时需要打开USB调试,比如连接电脑,刷机等操作。但有时候会遇上USB调试模式打不开,可能会选择刷机…

this 和super关键字

一、this 关键字 this关键字代表的就是函数所属的调用者。this关键字的作用: 1.如果存在同名的成员变量与局部变量时,在方法内部默认的时访问的时局部变量,可以通过this关键字调用成员变量 2.在一个构造方法中调用另一个构造方法来初始化对象this关键字要注意…

MODBUS通讯协议详解(基于485)

参考:灵育科技Modbus课程总结 作者:Naunyang 时间:2020-11-23 13:51:58 网址:https://blog.csdn.net/Naunyang/article/details/108740456?spm1001.2014.3001.5502 参考:MODBUS用于单片机通讯 作者:hillch…

C\C++与Java中的static关键字

C\C里面的static: 面向过程的static: 在c和c面向过程的设计里,在全局变量前加上static关键字则可将该变量定义为一个静态全局变量,比如: static int a; 那么c和c中的静态全局变量有什么特点呢: 1、 变…

步进电机、伺服电机、舵机、无刷电机、有刷电机区别

更多干货推荐可以去牛客网看看,他们现在的IT题库内容很丰富,属于国内做的很好的了,而且是课程刷题面经求职讨论区分享,一站式求职学习网站,最最最重要的里面的资源全部免费!!!点击进…

56、servlet3.0-与SpringMVC整合分析

56、servlet3.0-与SpringMVC整合分析 web容器在启动的时候,会扫描每个jar包下的META-INF/services/javax.servlet.ServletContainerInitializer加载这个文件指定的类SpringServletContainerInitializerspring的应用一启动会加载感兴趣的WebApplicationInitializer接…

html提交form预处理,HTML5 之图片上传预处理

在开发 H5 应用的时候碰到一个问题,应用只需要一张小的缩略图,而用户用手机上传的确是一张大图,手机摄像机拍的图片好几 M,这可要浪费很多流量。获取图片通过 File API 获取图片。var input document.createElement(input);input…

PID算法实现温控

参考:PID算法 作者:hillchina 发布时间: 2016-09-28 21:48:04 网址:https://www.bilibili.com/video/BV1Ds411t7Hr 以上完整的视频教程在腾讯课堂里有,在腾讯课堂里搜索PID,找到灵育科技,课程对…

React.js

类似于Jquery,主要是操作Dom 特点:1、基于组件开发 2、基于虚拟dom,速度快 用React的所需要引入的三个包: 1、react.min.js (引入React语法) 2、react-dom.min.js (用react操作Dom)…

[Unity3d]多个摄像机叠加效果

今天学习到一个多个摄像机看到的场景在同一个层显示,比如我们做一个类似反光镜的效果,当然反光镜可以直接用Shader来实现,但我就是了实现一个类比这样的一个效果,一个摄像机将看到的图像显示到一个Texture上,然后将Tex…

单片机程序跑飞原因

参考:单片机程序又跑飞? 作者:嵌入式ARM 网址:https://mp.weixin.qq.com/s/a22zVdSfCqWjSmlBxK2R1Q 目录数组越界/溢出中断服务程序缺失看门狗复位单片机中有看门狗,长时间不喂狗,程序就会复位。为什么长时…

html5大赛是什么,IE9开发大赛为HTML5打了一针兴奋剂

尽管HTML5是一种新的网页浏览标准,目前仅有苹果和微软的IE9支持该标准。客观地说,HTML5还是小众用户的标准。对于IE9来说,如果HTML5标准无法普及,IE9的硬件加速和性能优势就无从体现。加之Adobe一直力挺Flash,这对HTML…

apicloud手机查看效果

1.wifi全量同步 2.本地编译 需要在同一个WiFi中,WiFi全量同步,手机才会接受文件当代码改动时,需要本地编译后进行下载 如果是在海马模拟器上看效果,直接选择云编译自定义apploader-编译-下载apk文件-直接把apk文件拖进海马模拟器 …

Java关键字final使用详解

2019独角兽企业重金招聘Python工程师标准>>> http://docs.oracle.com/javase/tutorial/java/IandI/final.htmlWriting Final Classes and MethodsYou can declare some or all of a classs methods final. You use the final keyword in a method declaration to in…

一行代码揭开CPU执行原理

参考:一行代码,揭开CPU执行原理! 作者:嵌入式ARM 网址:https://mp.weixin.qq.com/s/qFnKhWqBGRCFAnp_KC1dmw 目录1、高级语言2、编译链接3、机器指令4、指令格式5、执行指令拓展总结很多刚刚入坑的小白可能对此完全没有…

html链接txt文件,怎么在TXT文件中建立超链接

参考方法如下:1、在桌面鼠标依次右键——新建——文本文档;2、在记事本中输入命令:echo off echo 正在清除系统垃圾文件,请稍等...... del /f /s /q %systemdrive%\*.tmp del /f /s /q %systemdrive%\*._mp del /f /s /q %systemd…

spark 2.4安装

1、spark 官网选择对应Hadoop的版本,之前安装的Hadoop版本为hadoop-3.0.2,获取下载包:wget http://mirrors.hust.edu.cn/apache/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.7.tgz2、解压缩安装包,创建软连接:tar -zxv…

redhat 挂载 iso文件 提示 mount :not a directory

redhat 挂载 iso文件 提示 mount :not a directory posted on 2013-12-28 22:26 秦瑞It行程实录 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/ruiy/p/errors.html