【数据结构初阶】反转链表

news2024/11/25 21:32:51

文章目录

  • 问题描述:
  • 思路分析:
  • 代码展示:


问题描述:

给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。
数据范围: 0≤n≤1000
要求:空间复杂度 O(1) ,时间复杂度 O(n) 。
输入:{1,2,3}
输出:{3,2,1} (若输入空链表则输出空)

以上转换过程如下图所示:
在这里插入图片描述


思路分析:

  • 采用头插法。从链表的第二个节点开始依次进行头插,直到下一个元素为null时返回head。
    在这里插入图片描述

  • 首先定义一个cur来表示链表的第二个节点,即cur = head.next。

  • 然后将head指向的元素地址置为空,因为反转之后head将是最后一个元素。即head.next = null。
    在这里插入图片描述

  • 因为要对每个节点都要进行头插,因此需要遍历整个链表,即循环条件就是当cur为空时遍历结束。

  • 根据头插法原理,让cur指向head,即cur.next = head。然后新的头节点就是cur,即head = cur。

  • 因为头插法会修改cur的指向,即需要再定义一个节点在修改cur.next前用来保存cur的下一个节点,每次头插结束,让cur等于下一个节点,进行下一次的头插。
    在这里插入图片描述

  • 最后还应考虑到两种特殊情况:当head为空时,直接返回null;当只有一个节点时,直接返回head。


代码展示:

public ListNode ReverseList(ListNode head) {
        if(head == null){
            return null;
        }
        if(head.next == null){
            return head;
        }
        ListNode cur = head.next;
        head.next = null;
        while(cur != null){
            ListNode curNext = cur.next;
            cur.next = head;
            head = cur;
            cur = curNext;
        }
        return head;
    }

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

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

相关文章

【计算机毕业设计】79.勤工助学管理系统源码

一、系统截图(需要演示视频可以私聊) 摘 要 随着我国教育需求不断增加,高校教育资源有限,教育经费相对不足的情况下,利用现代信息技术发展高等教育,不仅充分利用了优秀的教育资源,而且为更多的…

迅为3A5000_7A2000开发板龙芯LoongArch架构

迅为3A5000_7A2000开发板龙芯LoongArch架构 主要参数 处理器: 龙芯3A5000 主频: 2.3GHz-2.5GHz 桥片: 7A2000 内存: 8GB、16GB DDR4带ECC纠错(配置可选) 系统: Loongnix 典型功耗: 35W 核心板: 16层 底板: 4层 核心板参数 尺寸: 125*95mm CPU: 龙芯…

J-004 Jetson电路设计之HDMI设计--NANO XAVIER NX

HDMI电路设计1 简介2 框图介绍3 原理图介绍1 简介 NANO & XAVIER NX提供一路HDMI接口,DP接口与HDMI是兼容的,可用于扩展一路HDMI。其中引脚说明: PIN名称描述方向类型63HDMI_DP_TXDN0DisplayPort 1 Lane 0 or HDMI Lane 2输出HDMI/DP65HDMI_DP_TXD…

高阶数据结构--图

本篇主要是介绍:图的一些常用的算法。 文章目录 一、图的基本概念二、图的存储结构 1、邻接矩阵2、邻接表三、图的遍历 1、广度优先遍历2、深度优先遍历四、最小生成树 1、Kruskal算法2、Prim算法五、最短路径 1、单源最短路径--Dijkstra算法2、单源最短路径--Bellm…

postgres 源码解析 45 btree分裂流程_bt_split

B树简介 B树一种多路平衡树,有如下特点: m阶B树表示每个节点最多含有m-1个元素,除了根节点之外,每个节点至少含有ceil(m/2)-1个元素。如5阶B树,每个节点最多4个元素,除根节点之外最少含有2个元素&#xf…

Java异常(Exception)处理及常见异常

很多事件并非总是按照人们自己设计意愿顺利发展的,经常出现这样那样的异常情况。 例如: 你计划周末郊游,计划从家里出发→到达目的→游泳→烧烤→回家。 但天有不测风云,当你准备烧烤时候突然天降大雨,只能终止郊游提…

Qt扫盲-QTableWidget理论总结

QTableWidget理论总结1. 概述2. QTableWidgetItem 概述3. 表头设置4. 常用功能5. 常用信号6. 槽函数7. 外观1. 概述 QTableWidget 是 Qt 提供的一个简单方便、标准的表格显示类。QTableWidget 中的 单元格数据 由 QTableWidgetItem 显示如果 想要一个使用你自己定义modle 的表…

MR案例(3):计算学生成绩(总分和平均分)

文章目录一、 任务目标1. 准备数据二、实行任务1. 创建Maven项目2. 添加相关依赖3. 创建日志属性文件4. 创建成绩映射器类5. 创建成绩驱动器类6. 启动成绩驱动器类,查看结果7. 创建成绩归并器类8. 修改成绩驱动器类9. 启动成绩驱动器列,查看结果一、 任务…

艾美捷利妥昔单抗Rituximab参数及应用

艾美捷利妥昔单抗Rituximab背景: 利妥昔单抗是一种针对CD20抗原的基因工程嵌合鼠/人单克隆IgG1κ抗体。利妥昔单抗的分子量约为145 kD。利妥昔单抗由哺乳动物细胞(中国仓鼠卵巢)产生。 艾美捷利妥昔单抗Rituximab基本参数: 中文…

Java+SSM流浪猫狗救助领养网站(含源码+论文+答辩PPT等)

项目功能简介: 该项目采用技术: 后端采用SSM框架 前端采用了htmlcssbootstrap框架 MySQL数据库Tomcat服务器,项目含有源码、文档、配套开发软件、软件安装教程、项目发布教程等 项目功能介绍: 项目分为前端和后端两,包含的功能主要…

DBCO-PEG-TPP,二苯并环辛炔-聚乙二醇-磷酸三苯酯,DBCO-PEG磷酸三苯酯

【产品描述】 西安凯新生物科技有限公司供应的:​DBCO-PEG-TPP亲水性聚乙二醇 (PEG) 间隔臂提供了一个长而灵活的连接,磷酸三苯酯为无味、无臭的白色结晶块状或粉末,它不溶于冷水,但可溶于50℃以上的热水中,当溶液温度降低至室温时呈现疏水性…

安装 DbVisualizer pro 10.0.16

DbVisualizer pro 10.0.16 双击安装, 选择下载 JRE运行后 选择 创建 桌面快捷方式 安装成功后 ping 报错无法连接到mysql , 驱动 所致 官方下载最新驱动 MySQL :: Download MySQL Connector/J (Archived Versions)https://downloads.mysql.com/archi…

校园二手书商城源代码基于微信小程序云开发,可在线支付提现,含详细配置教程

校园二手书商城源代码基于微信小程序云开发,可在线支付提现,含详细配置教程 完整代码下载地址:校园二手书商城源代码基于微信小程序云开发 欢迎使用,下面是配置教程 长话短说,下面直接说配置流程 一、小程序端 1…

JZ31. 栈的压入、弹出序列

文章目录1. 题目描述2. 解题思路3. 动图演示4. 代码实现1. 题目描述 题目链接:31. 栈的压入、弹出序列 2. 解题思路 元素入栈指的是把新元素放到栈顶元素的上面,使之成为新的栈顶元素; 元素出栈指的是从一个栈删除元素又称作出栈或退栈&am…

MySQL8.0高级篇(上)-架构与索引

文章目录一、MySQL环境安装与介绍1、MySQL安装1.1 安装前说明1.2 MySQL的Linux版安装1.3 MySQL登录1.4 字符集的相关操作1.5 字符集与比较规则(了解)1.6 请求到响应过程中字符集的变化1.7 SQL大小写规范1.8 sql_mode的合理设置2、MySQL的数据目录2.1 MySQL8的主要目录结构2.2 查…

Batch Normalization批量归一化

批量归一化(batch normalization)层,它能让较深的神经网络的训练变得更加容易。 对深层神经网络来说,即使输入数据已做标准化,训练中模型参数的更新依然很容易造成靠近输出层输出的剧烈变化。这种计算数值的不稳定性通…

前端基础_事件介绍

事件介绍 下面介绍一下浏览器在请求媒体数据、下载媒体数据、播放媒体数据一直到播放结束这一系列过程中,到底会触发哪些事件。  loadstart事件:浏览器开始请求媒介。  progress事件:浏览器正在获取媒介。  suspend事件:浏览器…

[附源码]计算机毕业设计Python大学生心理测评系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

(15)目标检测算法之 YOLOv7应用解析

本文翻译自:https://github.com/WongKinYiu/yolov7 YOLOv7 2022年发布,论文链接:YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors 模型性能如下: 网页端可执行demo:Hu…

分支和循环语句(5)

目录 1、什么是语句? 2、分支语句(选择结构) 1、if 语句 1、if 语句的语法结构 2、悬空else 3、if书写形式的对比 4、练习 3、switch语句 1、语法形式 2、在switch语句中的 break 3、default子句 4、循环语句 1、while循环 1、…