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

news/2024/12/22 14:27:54/

描述:

        给你单链表的头节点 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;多维度数…