单链表反转

参考:【图文解析】反转一个单链表
作者: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,一经查实,立即删除!

相关文章

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题库内容很丰富,属于国内做的很好的了,而且是课程刷题面经求职讨论区分享,一站式求职学习网站,最最最重要的里面的资源全部免费!!!点击进…

PID算法实现温控

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

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

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

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、执行指令拓展总结很多刚刚入坑的小白可能对此完全没有…

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

C语言常见编译错误及分析

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

面经——嵌入式常见面试题总结100题(上)

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

计算机专业运动会口号,运动会口号押韵有气势 计算机系霸气口号

淡泊明志,宁静致远,团结友爱,顽强拼搏。下面是文艺范收集的运动会口号押韵有气势,计算机系霸气口号,欢迎阅读收藏。1、球进了球,分了就会,不怕**,战无不胜。2、阳光运动,…

1. 观察者模式总结(C++)

1. 介绍 观察者模式:定义了一种“一对多”的依赖关系,让多个观察者对象同时监听一个对象的改变,即当该对象的状态发现改变时,会通知所有它依赖的观察者对象。观察者模式属于行为模式。 意图:定义对象间的一种一对多的依…

面经——嵌入式常见面试题总结100题(下)

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

学计算机要不要护发,脱发平时应该注意什么 四个妙招教你如何防止脱发

头发一掉,失去的不仅仅是发丝,还有美丽与颜值,一把把辛酸泪只能往肚子里吞。秃头星人们,如果已经脱发了,日常一定要加倍注意哦,一些错误的护发方法不要踩坑,护理、食疗、良好的生活作息&#xf…

面经——嵌入式软件工程师ARM体系与架构相关

参考:嵌入式软件工程师笔试面试指南-ARM体系与架构 作者:嵌入式与Linux那些事 发布时间: 2021-04-28 15:22:06 网址:https://blog.csdn.net/qq_16933601/article/details/116234673 目录 ARM体系与架构硬件基础NAND FLASH 和NOR F…

下列属于计算机人工智能应用领域的是多选题,每天五道选择题(10)

原标题:每天五道选择题(10)1.在Windows7操作系统中,磁盘维护包括硬盘检查、磁盘清理和碎片整理等功能,磁盘清理的目的是( )。A.提高磁盘存取速度B.获得更多磁盘可用空间C.优化磁盘文件存储D.改善磁盘的清洁度▼答案:B【解析】磁盘…

2019年3月未来教育计算机二级题库,2019年3月计算机二Access考试操作模拟试题001...

2019年3月计算机二Access考试操作模拟试题001浏览次数: 时间:2019/03/28一、基本操作题在考生文件夹中有一个“Acc1.mdb”数据库。(1)在“订单”表的“订单ID”和“客户”字段之间添加“产品ID”和“数量”字段。其中,“产品ID”字段的类…

面经——C/C++常见面试知识点总结附面试真题

参考:C/C 面试题 作者:zhaouc 发布时间: 2015-02-15 15:51:00 网址:https://blog.csdn.net/zhaouc/article/details/43835667 参考:C/C常见面试知识点总结附面试真题----20210529更新 作者:kuweicai 发布时…

计算机控制课程设计体会,计算机控制技术课程设计报告

1课程设计目的…………………………………………………1页码2课程设计题目描述和要求……………………………………1页码3.课程设计报告内容……………………………………………1页码4.心得体会………………………………………………………7页码5.参考数目……………………………

tomcat源码 Connector

Connector容器主要负责解析socket请求,在tomcat中的源码位于org.apache.catalina.connector和org.apache.coyote包路径下;通过上两节的分析,我们知道了Connector是Service的子容器,而Service又是Server的子容器。在server.xml文件…