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

力扣206. 反转链表

题目:

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
示例1:
在这里插入图片描述
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
示例 2:
在这里插入图片描述
输入:head = [1,2]
输出:[2,1]
示例 3:

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

提示:

链表中节点的数目范围是 [0, 5000]
-5000 <= Node.val <= 5000

分析:

本道题,需要考虑两种情况:
**第一种:**链表为空,反转链表依然是一个空链表。
**第二种:**链表不为空,需要反转:

定义三个指针n1,n2,n3,分别指向NULL,head,head->next

在这里插入图片描述

通过n2来遍历链表,n3先到结尾,为空时,此时链表还没有遍历结束,还没有实现全部反转

实现反转:n2->next=n1

在这里插入图片描述
将n1移到n2的位置,n2移动到n3的位置,n3往后移动一个节点

在这里插入图片描述

n2还不为空,继续遍历,先反转:n2->next=n1

在这里插入图片描述

将n1移到n2的位置,n2移动到n3的位置,n3往后移动一个节点
在这里插入图片描述
重复此操作,直到n2为空时:
在这里插入图片描述

这里需要注意一下:当n2下一个为空时,此时n3已经为空,n3->next也是空,此时n3已经不需要,因此,需要判断一下n3为不为空。

遍历结束后,返回n1即可

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
struct ListNode* reverseList(struct ListNode* head) {if(head==NULL){return NULL;}struct ListNode*n1,*n2,*n3;n1=NULL;n2=head;n3=head->next;while(n2){n2->next=n1;n1=n2;n2=n3;if(n3){n3=n3->next;}}return n1;
}
http://www.lryc.cn/news/220488.html

相关文章:

  • 深度学习之基于Tensorflow卷积神经网络花卉识别系统
  • leetcode链表
  • Kali Linux渗透测试的艺术
  • 2023年最新版潮乎盲盒源码含搭建教程
  • [GitLab] 安装Git 指定版本
  • vue中ref和$refs
  • CRM怎样帮助您的企业进行营销管理?
  • Gerrrit 管理员常用命令
  • 深入理解强化学习——多臂赌博机:增量式实现
  • 视频批量混剪剪辑软件类似剪映设计一个模板后, 视频,图片,文字,转场,音频,特效都可以系统随机
  • 优维低代码实践:打包发布
  • js深度学习(三)
  • JVM类的声明周期
  • html将复选框变为圆形样例
  • 笔记软件 Keep It mac v2.3.3中文版新增功能
  • uni-app 开发的H5 定位功能部署注意事项
  • CY5-COOH脂溶性羧基荧光染料1032678-07-1
  • 【CSS】div 盒子居中的常用方法
  • Pytorch网络模型训练
  • webgoat-Path traversal
  • P8976 「DTOI-4」排列,贪心
  • 使用 Python 进行自然语言处理第 5 部分:文本分类
  • uni-app---- 点击按钮拨打电话功能点击按钮调用高德地图进行导航的功能【安卓app端】
  • 通讯录详解(静态版,动态版,文件版)
  • 在windows中搭建vue开发环境
  • 数字化转型:云表低代码开发助力制造业腾飞
  • Linux学习之vim跳转到特定行数
  • 详解基于Android的Appium+Python自动化脚本编写
  • 【马蹄集】—— 百度之星 2023
  • 大数据毕业设计选题推荐-无线网络大数据平台-Hadoop-Spark-Hive