数据结构_单链表题-2.1

一. 反转单链表

将一个单链表反过来。

个人思路(一团浆糊大错特错)

反转嘛,变最后为起点,依次反转过来就行了。
1)找到最后三个链表结点,分别保存下来,以最后一个为首地址。
2)最后一个链表结点指向倒数第二个链表(倒数第三个的next赋值给最后一个的next)
3)这样每隔一个链表结点依次反转。
在这里插入图片描述

问题

1)你要先遍历一遍才能找到最后一个链表
2)单链表,你怎么可能回溯找上流的链表

参考思路:三指针迭代(头部插入一个新的空链表)

1)首链表(n2)前创建一个NULL链表(n1)
2)把首链表指向的第二个链表地址保存下来(n3)
3)首链表指向n1,完成反转(n2->next=n1)
4)依次右移,像三个为一组的窗口去调整反转。
在这里插入图片描述

增益点:指针迭代

单链表是自上而下的单方向,思考方向应该还为从上而下。

代码

SListNode* reverseList(SListNode* head) {if (head == NULL || head->next == NULL)return head;SListNode* n1 = NULL;SListNode* n2 = head;SListNode* n3 = head->next;while (n2 != NULL){n2->next = n1;n1 = n2;n2 = n3;if(n3!=NULL)n3 = n3->next;};return n1;
}

二. 单链表,有数量关系的处理

例如:
取单链表中间点
删链表倒数第几个数
…………

个人思路

1)遍历求长度
2)要第几个根据长度来看

问题

1)你要先遍历一遍才能找到最后一个链表,求长度
2)那这和数组有什么区别?效率不高
3)链表的长度本该没有什么意义。

参考思路:快慢指针

1)根据数量关系,中间点就是快指针到末尾时,慢指针以一半的速度到达中间位置。
倒数第n个,当快指针到末尾时,慢指针以落后n的速度到达相应的位置。
在这里插入图片描述

增益点:快慢指针,边遍历边根据数量关系定位

在快指针遍历完整个数组时,把之后的第二遍遍历用慢指针代替。适合有数量关系的题。

代码

一半的速度找到中间点。

while(cur->next){cur=cur->next;if(cur->next)cur=cur->next;low=low->next;}

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

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

相关文章

【51单片机系列】应用设计——8路抢答器的设计

51单片机应用——8路抢答器设计 文章设计文件及代码:资源链接。 文章目录 要求:设计思路软件设计仿真结果 要求: (1) 按下”开始“按键后才开始抢答,且抢答允许指示灯亮; (2&…

Orion-14B-Chat-RAG本地部署的解决方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

人麻了,刚面试入职就遇到MySQL亿级大表调优...

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

全新AI智能助手

在这个信息爆炸的时代,每个人都在寻找能够提升效率、激发创造力的工具。MidTool正是这样一款工具,它不仅能够帮助用户节省宝贵的时间,还能够激活用户的潜能,为创造力充电。MidTool的多功能性和高效率使其成为市场上最具吸引力的智…

【制作100个unity游戏之23】实现类似七日杀、森林一样的生存游戏6(附项目源码)

本节最终效果演示 文章目录 本节最终效果演示系列目录前言生命 食物 水简单绘制UI玩家状态脚本生命值控制饱食度控制水分控制 源码完结 系列目录 前言 欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第23篇中…

我的创作纪念日和前端碎碎念

机缘 作为一个前端开发者,我一直热衷于将设计和技术相结合,尽可能提升用户体验。我最初成为创作者的初心源于学习记录,把创作当作一个笔记,希望把自己遇到的问题,以及学习到的实用技巧记录下来,方便学习回…

Kafka下载安装及基本使用

目录 Kafka介绍 消息队列的作用 消息队列的优势 应用解耦 异步提速 削峰填谷 为什么要用Kafka Kafka下载安装 Kafka快速上手(单机体验) 1. 启动zookeeper服务 2. 启动kafka服务 3. 简单收发消息 Kakfa的消息传递机制 Kafka介绍 Apache Kafka…

Docker基础(持续更新中)

# 第1步,去DockerHub查看nginx镜像仓库及相关信息# 第2步,拉取Nginx镜像 docker pull nginx# 第3步,查看镜像 docker images # 结果如下: REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 60…

王道_数据结构 1.2_2_算法的时间复杂度

1.2_2_算法的时间复杂度 一、为什么要事先预估算法时间开销二、时间复杂度的计算与技巧1、化简“算法时间开销”的计算方式的依据2、常用技巧(1)加法、乘法规则(2)时间复杂度的数量级阶数排行 3、计算时间复杂度的结论与步骤&…

如何将Mac连接到以太网?这里有详细步骤

在Wi-Fi成为最流行、最简单的互联网连接方式之前,每台Mac和电脑都使用以太网电缆连接。这是Mac可用端口的标准功能。 如何将Mac连接到以太网 如果你的Mac有以太网端口,则需要以太网电缆: 1、将电缆一端接入互联网端口(可以在墙…

TensorFlow2实战-系列教程5:猫狗识别2------数据增强

🧡💛💚TensorFlow2实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Jupyter Notebook中进行 本篇文章配套的代码资源已经上传 猫狗识别1 数据增强 猫狗识别2------数据增强 猫狗识别3------迁移学习 1、猫狗识别任…

【学网络安全】kali linux入门及常用简单工具介绍(附工具包)

前言 相信很多同学了解到和学习网络安全的时候都听过kali系统,大家都称之为黑客最喜爱的系统,那么什么是kali,初学者用kali能做些什么,我将在本文中做简单的介绍 一、kali linux是什么? Kali Linux 是专门用于渗透测…