翻转链表(图解)

LCR 024. 反转链表 - 力扣(LeetCode)

题目描述

给定单链表的头节点 head ,请反转链表,并返回反转后的链表的头节点。

样例输入

示例 1:

输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]

示例 2:

输入:head = [1,2]
输出:[2,1]

示例 3:

输入:head = []
输出:[]

题解

显而易见,为了实现链表元素的反转,我们只需要修改元素的指针指向,如此遍历完整个链表,即可完成链表的反转,如下所示

但问题在于,如果我们首先修改指针的指向,那么我们就会丢失元素位置,如下:

 故核心代码应该如下:

        while(q){ListNode* tmp=q->next;q->next=p;p=q;q=tmp;}

代码

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* reverseList(ListNode* head) {ListNode*p=nullptr,*q=head;while(q){ListNode* tmp=q->next;q->next=p;p=q;q=tmp;}return p;}
};

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

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

相关文章

OmniGraffle Pro v7.22.3(流程图UML图)

OmniGraffle Pro是一款非常棒的绘图软件,具有多种功能,包括: 绘制图表:OmniGraffle Pro可以创建各种类型的图表,包括流程图、组织图、UML图、网络图等等。它还支持导入和导出多种文件格式,如PDF、SVG、Vis…

UE基础篇十:材质

导语: 视频文档在文末 虚幻引擎默认是延迟渲染(延迟渲染是通过先算出需要着色的像素,然后再迭代灯光,从而减少大量无效的灯光计算,来达到优化的目的) 一、基础知识 1.1 贴图分辨率尺寸 2的幂次方,长宽随意组合 非2的幂次方,不能设置MipMaps(引擎会生成多张分辨率更…

systrace分析 之 问题初步定位

2、systrace分析 之 问题初步定位 1、找到问题点2、有buffer,SF却什么没有取 2.1、GPU 处理时间长导致2.2、区分HWC release 是否有异常:2.3、SF 异常导致2.4、SF 自身处理时间长2.5、RenderThread处理时间长3、案例分享 1、找到问题点 2、有buffer&a…

外贸自建站怎么做?做外贸要怎样建设网站?

外贸自建站如何建立?海洋建站的具体步骤有哪些? 通过建立自己的外贸网站,您可以更好地展示公司的产品和服务,吸引更多的潜在客户,提高品牌知名度,拓展海外市场。那么,如何建立一个成功的外贸自…

移动硬盘打不开?正确操作方法分享!

“我的移动硬盘用了好几年了,但是不知道为什么,最近每次把移动硬盘插入电脑都显示无法打开。我还有一些很重要的数据在里面呢,有什么比较好的方法可以解决这个问题吗?” 作为一个便捷的存储工具,移动硬盘给我们带来了很…

MYSQL中的触发器TRIGGER

1.概念 触发器是一个特殊的存储过程,当触发器保护的数据发生变更时就会触发。 2.特性 1.触发器与表息息相关,一般我们一个表创建六个触发器。 2.六个触发器其实是三种类六个 insert 类型 before | after insertupdate 类型 before | af…

当攻防演练已成常态,企业应该相信西医还是老中医?

在面对疾病时,很多人常常会犹豫不决,不知道应该选择中医还是西医进行治疗。与疾病斗争的过程也是一场“战斗”,需要选择合适的“武器”和策略。有些人认为西医疗效快,能够迅速缓解症状;而另一些人则认为中医治疗更根本…

使用requests库设置no_proxy选项的方法

问题背景 在使用requests库进行HTTP请求时,如果需要使用爬虫IP服务器,可以通过设置proxies参数来实现。proxies参数是一个字典,其中包含了爬虫IP服务器的地址和端口号。然而,当前的requests库并不支持通过proxies参数来设置no_pr…

Azure 机器学习:使用 Azure 机器学习 CLI、SDK 和 REST API 训练模型

目录 环境准备克隆示例存储库 示例案例在云中训练1.连接到工作区PythonAzure CLIREST API 2. 创建用于训练的计算资源4. 提交训练作业PythonAzure CLIREST API 注册已训练的模型PythonAzure CLIREST API Azure 机器学习提供了多种提交 ML 训练作业的方法。 在本文中&#xff0c…

Java简介、基本语法

一、Java简介: Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 面向对象程序设计语言和 Java 平台的总称。 Java主要的特性: 1、Java语言是简单的的: Java语言的语法与C、C语言接近。Java丢弃了C中的一些特性,如操…

泛型编程 -- 模板详解

一、模板 在没有模板之前,如果我们写一个swap()两数交换函数,因为我们要支持 int 与int 交换 、double 与 double 交换等等情况,所以要实现swap()函数的多个重载,显得很繁琐,于是就引入了模板。 模板就是在需要模板的地…

HT8313 D/AB切换 音频功率放大器

HT8313具有AB类和D类的自Y切换功能,在受到D类功放EMI干扰困扰时,可随时切换至AB类音频功放模式(此时电荷泵升压功能关闭)。 HT8313内部固定28dB增益,内置的关断功能使待机电流Z小化,还集成了输出端过流保护…