当前位置: 首页 > news >正文

【链表OJ题 1】反转链表

目录

题目来源:

代码实现

1、方法一

1.1分析

2、方法二

2.1 分析


题目来源:

力扣

题目描述:

 

代码实现

1、方法一

struct ListNode* reverseList(struct ListNode* head) {struct ListNode* prev = NULL, * cur = head;while (cur){struct ListNode* next = cur->next;//头插cur->next = prev;prev = cur;//迭代cur = next;}return prev;
}

1.1分析

方法一是头插法。

创建三个结构体指针变量:prev、cur、next。

我们先置空 prev,将头指针 head 存放在 cur 中,next 存放 cur 的 next。第一次 cur 的 next 赋值为 prev 就是空,next 指向 cur的next,prev 指向当前的 cur。不断循环,当 cur 为空时就将整个链表反转完成了。

重点:

1.循环:next = cur->next; cur->next = prev; prev = cur; cur = next; 这个循环体的顺序是不可以交换的。 循环条件应该是 cur != NULL 时就进入循环,等于 NULL 的话就说明全部的结点头插已经完成了。

2.返回值:因为是头插,prev 一直指向头结点,所以返回 prev。return prev;

2、方法二

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

2.1 分析

方法二是逆置法,将开始向右的箭头改为向左就逆置成功了。

创建三个结构体指针变量:n1、n2、n3。

先置空 n1 ,将 head 存放在 n2 中,n3 保存 n2的next。将 n2的next 指向 n1,这样就可以让头结点的next指向空;然后将 n1 赋值为 n2;再将 n2 赋值为 n3;n2 如果指向的结点不为空,n3 就在自己的基础上再往后走一步。

重点:

1.如果原链表为空,就返回NULL;

2.循环:n2->next = n1; n1 = n2; n2 = n3; n3 = n3->next; 这个循环体的顺序是不可以交换的。以我们的图来看,当 n2 为空的时候循环停止,因此循环条件为 n2(n2 != NULL 与 n2 是一样的)。

3.返回值:我们的 n2 走到 NULL 的时候,n1 正好就指向了原链表的尾结点,因为是逆置,所以返回的就是尾结点。return n1;

4.循环体中,最后一次改变 n3 时 n3 已经是空了,再让 n3 = n3 ->next, 会出现空指针问题,因此我们在 n3 的改变上加一个判断条件 n3 != NULL,如果为空 n3 就不再往后移了。

相关文章:

【链表OJ题 1】反转链表

目录 题目来源: 代码实现 1、方法一 1.1分析 2、方法二 2.1 分析 题目来源: 力扣 题目描述: 代码实现 1、方法一 struct ListNode* reverseList(struct ListNode* head) {struct ListNode* prev NULL, * cur head;while (cur){st…...

【华为OD机试真题】计算网络信号 (javaC++python)100%通过率 超详细代码注释

计算网络信号 知识点广搜数组 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 网络信号经过传递会逐层衰减,且遇到阻隔物无法直接穿透,在此情况下需要计算某个位置的网络信号值,注意:网络信号可以绕过阴隔物array[m][n]的一维数组代表网格地图,array[i][j]=0代表i…...

Tomcat8和Tomcat9乱码问题

今天新开了一个小项目,我丢,乱码了,咋回事,好久没遇到过了,都忘了咋回事。今天必须记录下来,避免继续踩坑 Tomcat 8 不需要进行任何配置即可,它默认的是GBK,而win10 win7 默认的也是…...

Lesson13 IP协议

IP: 提供一种能力,将数据从A主机送到B主机的能力,但不一定会成功 主机 : 配有 IP 地址 , 但是不进行路由控制的设备 ; 路由器: 即配有 IP 地址 , 又能进行路由控制 ; 节点 : 主机和路由器的统称; 协议头格式 如何封装和解包: 定长报头 自描述字段 如何交付(分用) : 8…...

【每日一题Day192】LC1033移动石子直到连续 | 分类讨论 贪心

移动石子直到连续【LC1033】 三枚石子放置在数轴上,位置分别为 a,b,c。 每一回合,你可以从两端之一拿起一枚石子(位置最大或最小),并将其放入两端之间的任一空闲位置。形式上,假设这…...

2023年软件测试常见面试题100%问必背全套教程

随着数字化时代的到来,软件测试越来越受到重视。在未来的几年里,软件测试将继续成为信息技术领域中的热门职业之一。如果你是一名正在寻找或准备进入软件测试行业的人,那么这套常见面试题全套教程对你来说会非常有用。 这套教程旨在帮助你了…...

TypeScript 基本概念

TypeScript 是什么? 目标:能够说出什么是 TypeScript TS 官方文档 TS 中文参考 - 不再维护 TypeScript 简称:TS,是 JavaScript 的超集,JS 有的 TS 都有 TypeScript Type JavaScript(在 JS 基础之上…...

libfacedetection 人脸检测库 检测速度慢的问题

目录 一、libfacedetection 性能介绍 英特尔CPU 使用AVX2指令集 使用AVX512指令集 嵌入式设备 二、加速检测速度 libfacedetetion的前向推理速度很快的原因 使用axv2加速指令 一、libfacedetection 性能介绍 在上一篇文章中,我发现使用摄像头检测,构…...

项目骨架搭建

CSS样式补充 精灵图 CSS精灵图(CSS Sprites)是一种网页优化技术,通过将多个小图像合并成一个大图像,然后通过CSS的背景定位(background-position)属性来显示对应的图像部分。这种技术可以减少HTTP请求次数…...

“火灾不分昼夜,安全在我心中”——五一前厂房消防检查纪实

检查人员: Scott, Jason, Willson, Hanson 检查时间: 2023年4月28日 检查地点: 1厂房、2厂房室内外 检查内容: 一、室内外消火栓: 室内栓外观正常; 室外栓: 栓体防冻防尘套破损、遗失,消防栓缺少防撞保护; 按规定距离厂房外墙不宜小于5…...

UNIX环境高级编程——进程关系

9.1 引言 本章详细说明进程组以及会话的概念,还将介绍登录shell(登录时所调用的)和所有从登录shell启动的进程之间的关系。 9.2 终端登录 9.3 网络登录 9.4 进程组 每个进程除了有一进程ID之外,还属于一个进程组,进…...

C# ref和out用法和区别

首先:两者都是按地址传递的,使用后都将改变原来参数的数值。 其次:ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空&am…...

信息复制的革命:印刷术【提高信噪比】

文章目录 引言I 保证信息不被噪音所影响1.1 校对抄写错误的方法1.2 印刷术II 雕版印刷和活字印刷2.1 雕版印刷术2.2 毕昇的胶泥活字印刷2.3 古腾堡的铅活字印刷引言 科学的诞生,丰富了信息产生的源头。文字和纸张,加速了信息的传播和文明的进步。I 保证信息不被噪音所影响 复…...

【MySQL】事务

事务是一组操作的集合,我们将一组操作视为一个整体,所以事务里面的操作的时候要么同时成功,要么同时失败,之所以会有事务也是因为我们在实际生活中会用到 最典型的例子就是转账操作:A向B进行转账,A这边扣款成功的同时B那边一定是收款成功的,如果没有事务的话就会出现A扣款成功但…...

学习HCIP的day.03

目录 OSPF:开放式最短路径优先协议 OSPF的数据包 -- 5种 OSPF的状态机 OSPF的工作过程 OSPF的基础配置 关于OSPF协议从邻居建立成为邻接的条件 OSPF的接口网络类型 OSPF:开放式最短路径优先协议 无类别链路状态型IGP协议;由于其基于拓…...

Maven项目的配置

Maven是什么?它的作用是什么? Maven是一种开源的构建工具,它可以自动化构建、测试、部署和管理Java项目。它提供了一个中心化的构建过程,包括依赖管理、项目结构管理、插件管理等,使得开发人员更方便地维护和协作应用…...

Spring Boot使用(基础)

目录 1.Spring Boot是什么? 2.Spring Boot使用 2.1Spring目录介绍 2.2SpringBoot的使用 1.Spring Boot是什么? Spring Boot就是Spring脚手架,就是为了简化Spring开发而诞生的 Spring Boot的优点: 1.快速集成框架,提供了秒级继承各种框架,提供了启动添加依赖的功能 2.内…...

6WINDGate-overview

6WINDGate Overview Author:Once Day Date:2023年4月29日 本文是对6WIND官网文档的整理和翻译,仅供学习和研究之用,原始文章可参考下面文档: 6WINDGate Documentation - 6WIND6WINDGate Modules — 6WINDGate Modul…...

Java8新特性-流式操作

在Java8中提供了新特性—流式操作,通过流式操作可以帮助我们对数据更快速的进行一些过滤、排序、去重、最大、最小等等操作并且内置了并行流将流划分成多个线程进行并行执行,提供更高效、快速的执行能力。接下来我们一起看看Java8为我们新增了哪些便捷呢…...

Nautilus Chain Layer 3 圆桌会议圆满举办,超4.8K用户观看

在 4 月 21 日,Nautilus Chain 举办了以 “Layer 3 区块链的意义和发展以及Crypto的演变”为主题的线上圆桌会议,我们邀请了众多行业嘉宾包括 GitcoinDAO社区管理者Bob jiang、Whalers Community 发起者崔棉大师、Chatpuppy 联合创始人 古千峰、Whalers …...

本地elasticsearch中文分词器 ik分词器安装及使用

ElasticSearch 内置了分词器,如标准分词器、简单分词器、空白词器等。但这些分词器对我们最常使用的中文并不友好,不能按我们的语言习惯进行分词。 ik分词器就是一个标准的中文分词器。它可以根据定义的字典对域进行分词,并且支持用户配置自…...

Java 中的异常处理机制是什么?如何使用它来处理程序中的异常?(七)

Java 中的异常处理机制是一种重要的编程技术,它能够帮助程序员更好地管理程序中出现的异常情况。本文将详细介绍 Java 中的异常处理机制,并提供示例来说明如何使用异常处理机制来捕获和处理程序中的异常。 什么是异常? 在程序运行过程中&am…...

基于UDQ的并网单相逆变器控制【同步参考系下单相并网全桥正弦PWM逆变器闭环控制】(Simulink)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

JAVA开发——常用的注解

目录 spring spring MVC Spring Boot AOP MyBatis MyBatis-Plus JavaWeb开发 spring Autowired:自动安装,通过类匹配自动注册相应的Bean。 Component:将一个通用的 Java 类标记为 Bean,由 Spring 容器管理。 Controller&…...

【Java笔试强训 24】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥年终奖 …...

SpringCloud详解

SpringCloud是一个基于SpringBoot的分布式系统开发框架,它能够帮助我们快速、稳定地构建分布式系统。本篇博客将对SpringCloud进行详细解析,介绍SpringCloud的主要组件和相关应用场景,同时提供代码示例以帮助读者更好地掌握SpringCloud的实际…...

如何保障网络安全

网络安全是一个涵盖范围广、深入浅出的话题。随着互联网在现代社会中扮演的重要角色日益突出,网络安全问题成为各个领域所关注的焦点。在此,我们将从以下几个方面来阐述网络安全的重要性,并讨论几种保障网络安全的方式。 一、网络安全的重要性…...

网络基础:socket套接字

文章目录 1. 前导知识1.1 源MAC地址和目的MAC地址1.2 源IP地址和目的IP地址1.3 MAC地址和IP地址的配合1.4 源端口号和目的端口号1.5 Socket1.6 UCP协议和TCP协议1.7 网络字节序高低位高低地址大端和小端网络字节序常用转换函数 2. socket 网络编程2.1 socket 常见接口创建套接字…...

程序员如何学好PHP?做好这五个方面就够了

今天我想和大家分享一下程序员的第一份工作对自己的意义以及影响。首先,我们都知道第一份工作很重要,因为它决定了你以后的职业生涯的方向。你的第一份工作做的什么方向,很可能就是你以后职业生涯中最主要的方向。对我个人而言,我…...

【开源项目】Build your own X 构建自己的项目

【开源项目】Build your own X 构建自己的项目 简介 Build your own X 是一个精心收集了大量资源的项目指南,可以通过从头开始重新创建我们最喜爱的技术来掌握编程。 项目地址: https://github.com/codecrafters-io/build-your-own-x这些项目里的资源…...

wordpress 安装 404/关键词歌曲歌词

扫描仪通常被用于计算机外部仪器设备,通过捕获图像并将之转换成计算机可以显示、编辑、存储和输出的数字化输入设备,已经成为了我们办公和生活的必备设备了,但是很多win7系统用户并不知道要怎么连接扫描仪,其实方法很简单哦&#…...

北京手机网站制作/做百度推广的公司电话号码

问题描述 在使用CupertinoPageScaffold,在child添加ListView时会有20的top-padding(只有在设置navigationBar的backgroundColor时会出现)。 原因深究 ListView底层调用了SliverPadding,而SliverPadding的默认有20的padding /// By…...

专业的网站制作团队/充电宝seo关键词优化

从应用程序的角度来看,线程安全问题的产生是由于多线程应用程序缺乏某种保障——线程同步机制。从广义上来说,Java平台提供的线程同步机制包括锁、volatile关键字、final关键字、static关键字以及一些相关的API,如Object.wait()/Object.nofit…...

可以做简历的网站/厦门推广平台较好的

http://www.franche-comte.org/mini-site/cn/french-travel-castel-cheese-wine.html 转载于:https://www.cnblogs.com/gaozehua/archive/2011/09/07/2169764.html...

购物网站建设方案/seo咨询邵阳

此文转载自:https://blog.csdn.net/qq_42428482/article/details/110381214#commentBoxLinux系统启动默认为字符界面,一般不会启动图形界面,所以应对命令行熟练操作,以便更加高效低管理Linux系统。 本节向读者介绍Linux系统必备命…...

wordpress 发帖机/中国十大广告公司排行榜

前言 由于项目需要迁移到新环境,minio的数据也需要进行迁移,使用Rclone成功搞定。 关于Rclone是什么官网已有,这里不再赘述。 官网地址 中文网站 Rclone的使用 下载安装rclone curl https://rclone.org/install.sh | sudo bash 如果提示 …...