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

反转一个单链表

反转一个单链表

题意:反转一个单链表。
示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL

思路

需要虚拟节点么?
答:不需要,因为没有删除节点,只是改变了节点的指向。
遍历之后,如果找到之前的节点?
答:双指针。我们利用双指针来标识前一个节点。
首先我们为什么需要前一个节点?
答:因为当前节点的下一个节点需要指向前一个节点。所以需要下一个节点。
给兄弟们上一个动图,就明白一切了。
在这里插入图片描述

代码

//class ListNode{
//    private int val;
//    private ListNode next;
//    ListNode(int val){
//        this.val = val;
//    }
//    ListNode(int val,ListNode next){
//        this.val = val;
//        this.next = next;
//    }
//}
public class reverseTreeTest {//1. 双指针法public ListNode reverserTree(ListNode head) {ListNode prev = null;ListNode cur = head;ListNode temp;while (cur != null) {//步骤一:记录下下一个节点temp = cur.next;//步骤二:当前节点指向前一个节点cur.next = prev;//步骤三:之前的节点变成cur节点(因为1->null 之后,当遍历2的时候,需要 2->prev(1->null),如果这里不赋值,会变成2->null)prev = cur;//步骤四:当前节点变成下一个节点cur = temp;}return prev;}}

总结

双指针法在解决链表的时候,是一种常见的算法。比如后面的链表中寻找环,也是利用双指针(快慢指针)相遇来判断是否有环。
这个题目,唯一需要注意的是:虽然只有4行代码。但是你得理解每行代码的意义。实在不行,自己手动画一画,也就理解了。如果还是理解不了,先记着吧,后面熟能生巧。嘻嘻。

相关文章:

  • 推荐一款自动转换Python代码为HTML界面的爆款GUI库!
  • 【MySQL】学习多表查询和笛卡尔积
  • 2402C++,C++26包索引
  • C#,数值计算,矩阵的行列式(Determinant)、伴随矩阵(Adjoint)与逆矩阵(Inverse)的算法与源代码
  • ES实战--wildcard正则匹配exists过滤字段是否存在
  • JavaScript:JSON、三种包装类
  • 在SpringBoot中@PathVariable与@RequestParam的区别
  • IO线程-day1
  • compile error ESP32cam.h no such file or directory
  • sql常用语句小结
  • 服务器防火墙设置教程
  • SQL查询数据是否存在
  • 5G网络eMBB、uRLLC、mMTC
  • 【手写数据库toadb】数据字典缓存的实现方法和接口分享,面向对象设计思想,接口单一化
  • Sentinel注解@SentinelResource详解
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • Electron入门介绍
  • EventListener原理
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • js学习笔记
  • Laravel 中的一个后期静态绑定
  • leetcode-27. Remove Element
  • nodejs调试方法
  • npx命令介绍
  • Swift 中的尾递归和蹦床
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • vue 个人积累(使用工具,组件)
  • 初识 webpack
  • 近期前端发展计划
  • 经典排序算法及其 Java 实现
  • 容器服务kubernetes弹性伸缩高级用法
  • 一个SAP顾问在美国的这些年
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • ​如何防止网络攻击?
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • (42)STM32——LCD显示屏实验笔记
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (万字长文)Spring的核心知识尽揽其中
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .gitignore文件_Git:.gitignore
  • .gitignore文件---让git自动忽略指定文件
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .NET Core中Emit的使用
  • .net web项目 调用webService
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .NetCore项目nginx发布
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • @ModelAttribute 注解
  • @vue/cli 3.x+引入jQuery