[C/C++]数据结构 链表OJ题: 反转链表

news/2024/4/15 8:12:32

描述:

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

示例:

 

方法一:    让链表指向反向

如图所示:

代码思路:

struct ListNode* reverseList(struct ListNode* head) {struct ListNode* n1=NULL;struct ListNode* n2=head;struct ListNode* n3=head->next;while(n2){//n2指向n1n2->next=n1;//三个指针向后移动n1=n2;n2=n3;n3=n3->next;}return n1;
}

这里要注意,上述代码是我们通过画图写出来的大概思路,这里还有特殊情况需要处理一下,

比如:

  •  struct ListNode* n3=head->next;
  •  n3=n3->next;

开始并没有判断head和n3指针是否为空,直接引用next可能会导致错误

正确代码:


struct ListNode* reverseList(struct ListNode* head) {//空链表反转后还是空链表if(head==NULL){return NULL;}struct ListNode* n1=NULL;struct ListNode* n2=head;struct ListNode* n3=head->next;while(n2){n2->next=n1;n1=n2;n2=n3;//如果n3指向空的话就说明走到链表末尾了,没必要在往后走了if(n3)n3=n3->next;}return n1;
}

方法二:  头插法

从开始依次取出结点,按头插法插入,就可以实现链表反转

代码:


struct ListNode* reverseList(struct ListNode* head) {if(head==NULL){return NULL;}struct ListNode* cur=head;struct ListNode* newNode=NULL;while(cur){struct ListNode*ret=cur->next;cur->next=newNode;newNode=cur;cur=ret;}return newNode;}


http://www.ppmy.cn/news/1201411.html

相关文章

LLM之幻觉(一):大语言模型幻觉解决方案综述

论文题目:《Cognitive Mirage: A Review of Hallucinations in Large Language Models》 ​论文链接:https://arxiv.org/abs/2309.06794v1 论文代码:https://github.com/hongbinye/cognitive-mirage-hallucinations-in-llms 一、幻觉介绍 …

GD32单片机远程升级下载,手机在线升级下载程序,GD32在线固件下载升级,手机下载程序固件方法

GD32、STM32单片机,是我们最常见的一种MCU。通常我们在使用STM32单片机都会遇到程序在线升级下载的问题。 GD32/STM32单片机的在线下载通常需要以下几种方式完成: 1、使用ST/GD提供的串口下载工具,本地完成固件的升级下载。 2、自行完成系统B…

[移动通讯]【Carrier Aggregation-11】【5G NR Carrier Aggregation (CA) basics 】

前言: 参考: RF Wireless world 里面的 《5G/NR - Carrier Aggregation》 《5G NR Carrier Aggregation (CA) basics | Carrier Aggregation frequency bands》 This page describes 5G NR Carrier Aggregation (CA) basics. It mentions Carrier Aggre…

简单的Tkinter电子时钟实现,包括时间和日期,并且窗口可以设置为透明无标题栏

import tkinter as tk import timeclass Clock:def __init__(self, root):self.root rootself.root.overrideredirect(1) # 设置为无标题栏self.root.attributes(-alpha, 0.5) # 设置为半透明self.root.bind(<Button-1>, self.quit) # 点击窗口退出self.label_time …

【Linux】进程状态详解

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法…感兴趣就关注我吧&#xff01;你定不会失望。 本篇导航 0. 五状态进程模型1. 运行 >> R (running)2. 浅度睡眠 >> S (sleeping)3. 深度睡眠 >> D (disk sleep)4. 暂…

pytorch复现_UNet

什么是UNet U-Net由收缩路径和扩张路径组成。收缩路径是一系列卷积层和汇集层&#xff0c;其中要素地图的分辨率逐渐降低。扩展路径是一系列上采样层和卷积层&#xff0c;其中特征地图的分辨率逐渐增加。 在扩展路径中的每一步&#xff0c;来自收缩路径的对应特征地图与当前特征…

useContext本身并不能直接向下传递方法,

useContext本身并不能直接向下传递方法&#xff0c;但可以通过将其包装在自定义 hook 中来实现。 例如&#xff0c;假设你有一个 context 叫做 MyContext&#xff0c;其中包含一个函数叫做 myFunction。你可以创建一个新的 hook 来暴露这个函数&#xff1a; jsx import { use…

【微服务】一体化智慧工地管理平台源码

智慧工地系统是一种利用人工智能和物联网技术来监测和管理建筑工地的系统。它可以通过感知设备、数据处理和分析、智能控制等技术手段&#xff0c;实现对工地施工、设备状态、人员安全等方面的实时监控和管理。 一、智慧工地让工程施工智能化 1、内容全面&#xff0c;多维度数…

基于点云的深度学习方法综述

基于点云的深度学习方法综述_点云深度学习_视觉先锋的博客-CSDN博客 我们生活在一个三维世界里&#xff0c;自从1888年相机问世以来&#xff0c;三维世界的视觉信息就通过相机被映射到二维图象上。但是二维图像的缺点也是显而易见的&#xff0c;那就是缺少深度信息以及真实世界…

ifream标签中的子页面,操作父页面的元素

问题描述&#xff1a;子页面内容发生变化时&#xff0c;导航栏不会跟切换 解决办法&#xff1a; window.parent.document.getElementById demo html1 <html> <head><meta charset"UTF-8"><!-- import CSS --><link rel"stylesh…

Linux Vim撤销和恢复撤销快捷键

使用 Vim 编辑文件内容时&#xff0c;经常会有如下 2 种需求&#xff1a; 对文件内容做了修改之后&#xff0c;却发现整个修改过程是错误或者没有必要的&#xff0c;想将文件恢复到修改之前的样子。 将文件内容恢复之后&#xff0c;经过仔细考虑&#xff0c;又感觉还是刚才修改…

Mac安装opencvJava踩坑

SpringBoot导入opencv依赖 先将jar包添加到libraries中在resources目录下创建lib文件夹并复制jar包到这里添加如下依赖&#xff0c;并刷新maven <dependency><groupId>org.opencv</groupId><artifactId>opencv</artifactId><version>4.8.0…

清华交叉信息研究院2024届推免拟录取名单

直博生 硕士 分析 清华交叉信息研究院在推免中共录取直博生41人&#xff0c;其中081200计算机科学与技术24人&#xff0c;物理学17人&#xff1b; 共录取硕士生7人&#xff0c;都是081200计算机科学与技术专业 本文由博客一文多发平台 OpenWrite 发布&#xff01;

算法leetcode|87. 扰乱字符串(rust重拳出击)

文章目录 87. 扰乱字符串&#xff1a;样例 1&#xff1a;样例 2&#xff1a;样例 3&#xff1a;提示&#xff1a; 分析&#xff1a;题解&#xff1a;rust&#xff1a;go&#xff1a;c&#xff1a;python&#xff1a;java&#xff1a; 87. 扰乱字符串&#xff1a; 使用下面描述…

前端工程化(vue脚手架安装)

用命令行安装&#xff0c;先安装NodeJs&#xff0c;配置环境变量 1.npm config set prefix "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Node.js" //引号内路径是NodeJs安装所在路径 2.npm config get prefix 查看其是否成功 3.npm install -g vue/cli 4…

vue + axios + mock

参考来源&#xff1a;Vue mock.js模拟数据实现首页导航与左侧菜单功能_vue.js_AB教程网 记录步骤&#xff1a;在参考资料来源添加axios步骤 1、安装mock依赖 npm install mock -D //只在开发环境使用 下载完成后&#xff0c;项目文件package.json中的devDependencies就会加…

京东大数据:2023年Q3美妆行业数据分析报告

近日&#xff0c;珀莱雅发布三季报&#xff0c;今年前三季度&#xff0c;公司实现营收52.49亿元&#xff0c;同比增长32.47%。分季度看&#xff0c;“618大促”所在Q2业绩增长最为亮眼&#xff0c;营收同比增速达到46.22%&#xff0c;进入Q3&#xff0c;在电商大促缺席情况下&a…

UVM源码--uvm_component 浅析(一)

目录 1. uvm_object 2. uvm_component 3. 为什么在uvm_component 例化是需要指定一个parent&#xff1f; 4.uvm_component 的树形结构是如何组织起来的&#xff1f; 5. 静态函数与非静态函数的区别&#xff1a; 6. uvm_root 的单实例实现思路&#xff1a; 7. run_test 的…

antv/x6 自定义html节点并且支持动态更新节点内容

antv/x6 自定义html节点 效果图定义一个连接桩公共方法注册图形节点创建html节点动态更新节点内容 效果图 定义一个连接桩公共方法 const ports {groups: {top: {position: top,attrs: {circle: {r: 4,magnet: true,stroke: #cf1322,strokeWidth: 1,fill: #fff,style: {visib…
最新文章