手撕C语言题典——反转链表

目录

 前言

一.思路 

1)创建新链表

2)创建三个指针

 二.代码实现 


搭配食用更佳哦~~

数据结构之单单单——链表-CSDN博客

数据结构之单链表的基本操作-CSDN博客

前面学了单链表的相关知识,我们来尝试做一下关于顺序表的经典算法题~

 前言

    反转链表同样也是力扣上一道简单题,适合刚学过单链表的我们更好的理解链表相关知识~当然最好大家可以先去力扣上自己 try 一下~~

206. 反转链表 - 力扣(LeetCode)icon-default.png?t=N7T8https://leetcode.cn/problems/reverse-linked-list/description/

一.思路 

 题目不多赘述,只要眼珠子不是喘气的都能看懂

1)创建新链表

   创建新链表的思路和上一篇讲的大同小异,创建两个头尾指针,将原链表的拿过来进行头插就可以将链表反转 ,因为在此题这种方法算不上最简洁的方法,所以也不多赘述,有兴趣的可以去看上一篇的思路,附上链接~

手撕C语言题典——移除链表元素(单链表)-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/Antigonos/article/details/138647423?spm=1001.2014.3001.5501

2)创建三个指针

 我们创建 n1 n2 n3 三个指针,n1 指向空,n2 指向链表的头节点, n3 指向 n2 的下一个节点,也就是头节点的下一个节点,如此便可逐步翻转。我们让 n2 的 next 指针不再指向 n3,而是指向 n1,然后三个指针依次移动,n1 代替 n2 ,n2 代替 n3,n3指向 n2 的下一个节点:

然后再次重复以上步骤,将 n2 指向 n3 的指针指向 n1,到最后 n3 后面没有下一节点了就可以跳出循环,此时 n1 指针指向的就是新链表的头指针了。

循环完成

 创建三指针的思路就可以理顺了:

  • 让 n2 的 next 指针指向 n1
  • n1 = n2
  • n2 = n3
  • n3 = n3 -> next

 二.代码实现 

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
typedef struct ListNode ListNode;
struct ListNode* reverseList(struct ListNode* head) {//判断为空if(head==NULL){return head;}//创建三个指针ListNode*n1,*n2,*n3;n1 = NULL,n2 = head,n3 = n2->next;while(n2){n2->next = n1;n1 = n2;n2 = n3;if(n3)n3 = n3 -> next;}return n1;
}

需要注意的是,题目中给了提示: 

我们需要判断链表是否为空,如果为空直接返回头节点就行。

这道题到这就结束啦~是不是还蛮简单的,第二个思路虽然难想一点,但只要理解了代码就非常简洁~~ 

下一篇会接着将另一道有关链表的算法题~~

🎈🎈完结撒花🎈🎈 

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

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

相关文章

Github 2024-05-12 php开源项目日报 Top10

根据Github Trendings的统计,今日(2024-05-12统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量PHP项目10Filament: 加速Laravel开发的完美起点 创建周期:1410 天开发语言:PHP协议类型:MIT LicenseStar数量:12228 个Fork数量:1990 次关…

Isaac Sim 4 键盘控制小车前进方向(学习笔记5.8.2)

写的乱糟糟,主要是这两周忘了记录了...吭哧吭哧往下搞,突然想起来要留档,先大致写一个,后面再往里添加和修改吧,再不写就全忘了 有一个一直没解决的问题: 在保存文件时出现问题:isaac sim mism…

Docker学习(带图详细)

一、安装docker 参考官方文档:https://docs.docker.com/engine/install/centos/ 查看系统版本 [rootlocalhost ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [rootlocalhost ~]# [rootlocalhost ~]# uname -a Linux localhost.localdomai…

vs code中如何使用git

由于本地代码有了一些储备,所以想通过网址托管形式,之前一直使用了github,但是鉴于一直被墙,无法登录账号,所以选择了国内的gitee来作为托管网站。 gitee的网址:Gitee - 基于 Git 的代码托管和研发协作平台…

在另外一个页面,让另外一个页面弹框显示操作(调佣公共的弹框)

大概意思是,登录弹框在另外一个页面中,而当前页面不存在,在当前页面中判断如果token不存在,就弹框出登录的弹框 最后一行 window.location.href … 如果当前用户已登录,则执行后续操作(注意此处,可不要)

QT设计模式:策略模式

基本概念 策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列方法,并使它们可以相互替换。策略模式使得算法可以独立于客户端而变化,使得客户端可以根据需要选择相应的算法。 策略模式通常由以下角色组…

如何创建window7,window10虚拟机

一、创建window7虚拟机 他的镜像不像window11一样可以搜到的,我们需要去msdn下载他的镜像文件 个人推荐倒数第四个,也就是我勾选的那个 这个是迅雷下载地址,复制到迅雷里下载就好了。 最好和我这样,创建文件夹,虚拟机…

创新指南|设计冲刺 – 更快找到成功的创新方案

“ 设计冲刺(Design Sprint)” 一词与跑步无关,而且不局限于设计,它与引导团队加速创新密切相关。设计冲刺旨在帮助创新团队在很短的时间内解决一个极有价值的问题。本文将深入解析这一法宝:设计冲刺是什么&#xff1f…

49. UE5 RPG 使用Execution Calculations处理对目标造成的最终伤害

Execution Calculations是Unreal Engine中Gameplay Effects系统的一部分,用于在Gameplay Effect执行期间进行自定义的计算和逻辑操作。它允许开发者根据特定的游戏需求,灵活地处理和修改游戏中的属性(Attributes)。 功能强大且灵…

【操作系统期末速成】​内存管理|内存的装入模块在装入内存的方式|分配管理方式|页面置换算法|页面置换

🎥 个人主页:深鱼~🔥收录专栏:操作系统🌄欢迎 👍点赞✍评论⭐收藏 推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到…

栈和队列讲解

文章目录 栈栈的实现栈的初始化压栈出栈获取栈顶元素获取栈内有效元素个数检查是否为空销毁栈栈的使用 栈全部代码队列的初始化队尾入队列队头出队列获取队列头部元素获取队列队尾元素获取队列中有效元素个数检测队列是否为空,如果为空返回非零结果,如果…

矿用泄爆装置之——水封式防爆器使用说明

矿用泄爆装置之——水封式防爆器使用说明。 在这个快节奏的时代,您需要一款能够与您一同成长,满足您需求的产品。我们为您带来的不仅仅是一件产品,更是一份属于您不一样的新体验。【1-5-9】 一、水封式防爆器产品使用介绍 安装在抽放瓦斯泵进…

汇昌联信:做拼多多网点需要具备什么能力?

在当前电商行业高速发展的背景下,拼多多以其独特的商业模式迅速崛起,成为众多创业者和商家关注的焦点。想要运营一家成功的拼多多网点,不仅需要对平台规则有深入的了解,还需要具备多方面的能力。这些能力是确保网点稳定运营并实现…

使用python将`.mat`文件转换成`.xlsx`格式的Excel文件!!

要将.mat文件转换成.xlsx格式的Excel文件 第一步:导入必要的库第二步:定义函数来转换.mat文件第三步:调用函数注意事项 要将.mat文件转换成.xlsx格式的Excel文件,并保持文件名一致,你可以使用scipy.io.loadmat来读取.m…

【getopt函数用法】

这里写目录标题 一、概述二、选项字符串规则:三、getopt 返回值四、会用到的全局变量:三、示例代码四、上机实验 一、概述 int getopt(int argc, char * const argv[], const char *optstring); extern char *optarg; //这个最常用,保存一个…

Geopandas以及CMakeList程序编写技巧

Geopandas官方文档 Geopandas官方文档 reset_index()函数 pandas库中的reset_index()函数是用于重新设置数据框索引的方法。 例如:当我对于文件数据进行了一系列操作后,例如设置了索引set_index,那么会导致数据的索引框发生变化&#xff…

医疗行业面临的网络安全挑战及应对策略

网络攻击已经成为各行各业日益严重的威胁,但医疗行业尤其容易受到影响。2023年,医疗领域的黑客事件占数据泄露的79.7%。 医疗领域 虽然患者、医疗服务提供者和决策者都对保护医疗信息有所关注,但关键的弱点在于提供电子健康记录(…

【iOS】RunLoop详解(二)

RunLoop详解(二) RunLoop 的概念RunLoop 与线程的关系RunloopRunloop与线程的关系RunLoop对外的接口Runloop的Mode应用场景举例举例说明小结 RunLoop 的内部逻辑RunLoop的底层实现苹果用RunLoop实现的功能AutoreleasePool事件响应手势识别界面更新定时器…

[OpenGL高级光照] 阴影改善

目录 一 阴影失真 二 阴影改善 2.1 减小片段深度值 2.2 降低纹理 2.3 注意事项 三 消除Repeat的问题 3.1 让裁剪矩阵的立方体变大 ​3.2 利用采样范围重置 四 精度问题 本章节源码 点击此处 一 阴影失真 在上一篇中,实现了阴影效果之后,但是我们会发现阴影效果中地面…

draw.io 网页版二次开发(3):打包和部署(war包)

目录 一 说明 二 环境配置 1. 下载并安装 Apache Ant 2. 下载并安装JDK和JRE 3. 下载tomcat 4. Ant、JDK和JRE 环境变量的配置 三 draw.io打包 四 部署 五 最后 一 说明 应公司项目要求,需要对draw.io进行二次开发,并将html界面通过iframe 嵌…