【C语言】Leetcode 206.反转链表

news2024/11/16 9:25:55

博主主页:17_Kevin-CSDN博客

收录专栏:《Leetcode》


题目

解决思路

思路一:翻转链表

struct ListNode* reverseList(struct ListNode* head) 
{
    if(head == NULL)
    {
        return NULL;
    }

    struct ListNode* n1 = NULL,*n2 = head,*n3 = n2 -> next;
    while(n2 != NULL)
    {
        n2 -> next = n1;
        n1 = n2;
        n2 = n3;
        if(n3 != NULL)
        {
            n3 = n2 -> next;
        }

    }
    return n1;
}

我们定义三个节点的指针n1,n2,n3.分别指向NULL,head,head -> next。这样我们通过三个指针来临时存放各个节点,以此为基础来重新将各个节点进行链接。之后通过while循环使指针向后移动,逐一将n2位置的节点断开与n1之前的链接,再由n2指向n1进行链接。

过程如下图:

思路二:头插法

struct ListNode* reverseList(struct ListNode* head) 
{
    struct ListNode *cur = head;
    struct ListNode *newhead = NULL;
    while(cur)
    {
        struct ListNode *next = cur -> next;
        cur -> next = newhead;
        newhead = cur;
        cur = next;
    }

    return newhead;

}

首先我们定义了两个结构体指针,cur和newhead,用cur来指向当前的节点,从head开始;用newhead指向一个NULL,newhead将作为后面链接新链表的表头。

然后我们用while循环将链表遍历,直到cur的指向是NULL。在遍历的过程中,每一次cur指向的节点不是NULL的时候定义一个结构体指针next,该指针用来暂时保存cur的next,因为在连接的时候cur会先被用来去链接在新链表上,这样的话就没法找到之前链表中cur指向的下一个节点了,所以用next指向下一个节点来保证完成整体的链表的遍历。

在保证可以正常完成遍历后,我们就可以来实现每一层循环的逻辑了:

cur的next指向newhead实现了以下操作:

newhead指向cur实现了以下操作:

cur指向next实现了以下操作:

通过以上的逻辑,在一层层遍历后,直到cur对应的节点为空的时候也就表示原来的节点已经被全部链接到新的链表上了,完成了链表的反转。


以上就是该篇的全部内容啦~

如果我的博客对您的学习有帮助,希望可以得到您的三连~

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

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

相关文章

ChatGPT Plus 如何开启插件

ChatGPT Plus 如何开启插件 购买完 ChatGPT Plus 会员之后,需要手动开启才能使用 GPT 的插件和 Code interpreter服务。 ​ 具体步骤如下: 1. 进入设置 点击左下角个人邮箱的位置,在弹窗中选择 Settings &Beta 2. 开启选项 在设置选…

紫光展锐T618_4G安卓核心板方案定制

紫光展锐T618核心板是一款采用纯国产化方案的高性能产品,搭载了开放的智能Android操作系统,并集成了4G网络,支持2.5G5G双频WIFI、蓝牙近距离无线传输技术以及GNSS无线定位技术。 展锐T618核心板应用旗舰级 DynamlQ架构 12nm 制程工艺&#x…

以线缆行业为例,工业智能网关的实际应用及其带来的变革-天拓四方

工业智能网关是一种集数据采集、传输、处理和分析于一体的智能化设备。它能够实现对工业现场各种传感器、执行器等设备的数据进行实时采集,并通过网络传输到云端或本地数据中心进行分析处理。同时,工业智能网关还具备边缘计算能力,能够在本地…

Domain Adaptation Vs. Prompt-Tuning:能否用域自适应解决大模型提示学习问题?

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 作者简介 李江梦,中国科学院软件研究所天基综合信息系统全国重点实验室助理研究员 论文简介 今天介绍的是被机器学习领域顶级学术会议ICLR 2024接收的论文:BayesPrompt: Prompting Large…

国创证券|AI手机PC概念拉升,福蓉科技4连板,思泉新材大涨

AI手机PC概念大幅走高,到发稿,思泉新材涨近15%,盘中一度涨停;道明光学、福蓉科技均涨停,诚迈科技涨近8%,亿道信息涨逾6%。 值得注意的是,福蓉科技已接连4个交易日涨停。公司4日晚间发布危险提示…

Qt 实现橡皮擦拭显示图片

1.简介 在一些游戏中看见类似解密破案的效果,使用手触摸去擦拭图片上的灰尘,然后显示最终的图片,所以也想试试Qt实现的效果。大家有自己想做的效果,都可以尝试。 以下是效果展示图。 可以控制橡皮擦的大小,进行擦拭…

nginx 配置404 及 nginx demo

郭永坤123/nginx-demo nginx demo: 包含 : 负载均衡 自定义conf 反向代理

基于Springboot的助农管理系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的助农管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&…

Linux系统使用宝塔面板安装MySQL服务并实现公网远程访问本地数据库【内网穿透】

文章目录 前言1.Mysql服务安装2.创建数据库3.安装cpolar3.2 创建HTTP隧道 4.远程连接5.固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 宝塔面板的简易操作性,使得运维难度降低,简化了Linux命令行进行繁琐的配置,下面简单几步,通过宝塔面板cp…

typedef定义结构体--声明结构体变量--指向该类型的指针

// 结构体指针.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // //#define _CRT_SECURE_NO_WARNINGS //在C或C程序中,#define _CRT_SECURE_NO_WARNINGS 是一个预处理指令, //用于在编译时禁止特定的安全警告。这些警告通常与使…

#QT(程序打包)

1.IDE:QTCreator 2.实验:打包到windows(exe文件) 3.记录: (1)切换工厂到"release",release模式基本没有调试信息,比较精简,debug模式有很多调试信…

第1章:绪论 1.1数据库系统概述

文章目录 1.1 数据库系统概述1.1.1 数据库的4个基本概念1.1.2 数据管理技术的产生和发展1.1.3 数据库系统的特点 1.1 数据库系统概述 1.1.1 数据库的4个基本概念 数据(Data) 是数据库中存储的基本对象 数据的定义:描述事物的符号记录 数据的种类:文本、…

京津冀光伏展

京津冀光伏展是中国在京津冀地区举办的一项光伏产业展览活动。该展览旨在展示京津冀地区光伏产业的最新发展成果,促进光伏行业的交流与合作,推动光伏产业的可持续发展。 光伏产业是指利用太阳能将光能转化为电能的产业。作为一种清洁能源,光伏…

文章置顶功能的测试用例应该怎么写?

写文章置顶功能的测试用例时,可以考虑以下几个方面: 一、基本功能测试: 检查是否能够成功将文章置顶。 验证置顶后的文章是否显示在顶部位置。 测试取消置顶功能是否正常。 二、多种状态测试: 置顶一篇已发布的文章。 置顶一篇…

opencart3 添加速卖通商品脚本

非爬虫,只能把速卖通商品信息拿下来解析插入到自己的项目里。 刚接触opencart3没多久,有一些新项目需要添加商品,每次手动从速卖通复制信息又很慢,就自己写了一个脚本。 思路:速卖通商品详情页有一段数据包含了几乎所…

5分钟速成渐变色css

色彩的分支——渐变色定义:按照一定规律做阶段性变化的色彩(抽象!!!) 我们可以将图片分为两块 以中心线为参考,再来看渐变色的定义:按照一定规律做阶段性变化的色彩 既然是按一定的…

韦斯尔顿公爵以自己的方式登上顶峰!迪士尼新机器人出圈!

文 | BFT机器人 去年12月,迪士尼推出的最新机器人角色韦瑟尔顿公爵(Duke Weaselton)首次登上上海迪士尼度假区的舞台。Duke 是华特迪士尼幻想工程研发 (R&D) 和迪士尼研究中心下一代机器人技术的演示。通过杜克,我们能看到各…

奥维云网:森歌智能水洗集成灶开启集成灶4.0时代

新的一个商业“竞争年”正式到来。厨电集成灶行业率先发力。2曰27日,森歌以“勠力同心,共生共歌”为主题召开了盛大的全国优秀经销商峰会,并在峰会上一连发布了三个重磅消息,被视为集成灶行业的破冰行动! 从国家统计局…

【Python】进阶学习:pandas--info()用法详解

【Python】进阶学习:pandas–info()用法详解 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望得到您的订…

模拟信号转换光电隔离变送器导轨式0-75mV0-100mV0-50mV转4-20mA0-5V0-10V

概述: 导轨安装DIN11 IPO OC系列模拟信号隔离放大器是一种将输入信号隔离放大、转换成按比例输出的直流信号混合集成厚模电路。产品广泛应用在电力、远程监控、仪器仪表、医疗设备、工业自控等需要直流信号隔离测控的行业。此系列产品内部采用了线性光电隔离技术相…