Java数据结构 (链表反转(LinkedList----Leetcode206))

 

1. 链表的当前结构

  • 每个方框代表一个节点,每个节点包含两个部分:
    • 左侧的数字:节点存储的值,例如 4534 等。
    • 右侧的地址(如 0x90):表示该节点 next 指针指向的下一个节点的内存地址。
  • 例子中,链表从右向左依次连接,形成 45 -> 34 -> 23 -> 12
初始结构
  • 链表的头节点为 12head 指向 12
  • cur:当前节点,指向某个正在操作的节点。

2. 代码逻辑解读

head.next = null; // 第一步
cur.next = head;
head = cur;
cur = curN;

代码功能

  1. head.next = null;

    • 将原链表的 headnext 置为 null,这是反转的关键一步,因为反转后,原来的头节点将变成尾节点。
  2. cur.next = head;

    • 将当前节点 curnext 指向 head
    • 这样,当前节点 cur 插入到新链表的头部。
  3. head = cur;

    • 更新头节点为 cur,当前节点变成了新链表的头部。
  4. cur = curN;

    • cur 更新为下一个节点 curN,继续处理链表的剩余部分。

3. 图示解析

  • 初始状态

  • 完整代码:

    public ListNode reverseList(ListNode head) {ListNode cur = head;  // 当前节点ListNode curN;        // 下一个节点head = null;          // 初始化新链表的头部为空while (cur != null) {curN = cur.next;  // 保存下一个节点的位置cur.next = head;  // 当前节点指向新链表的头部head = cur;       // 更新新链表的头部cur = curN;       // 移动到下一个节点}return head;
    }
    

    5. 反转链表的特点

  • 时间复杂度O(n),每个节点只处理一次。
  • 空间复杂度O(1),只使用了固定的指针变量 curcurN
  • 应用场景
    • 需要逆序访问链表时(如回文检查)。
    • 数据倒序排列。

反转链表原理(Java实现)_哔哩哔哩_bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/893747.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux查看服务器的内外网地址

目录: 1、内网地址2、外网地址3、ping时显示地址与真实不一致 1、内网地址 ifconfig2、外网地址 curl ifconfig.me3、ping时显示地址与真实不一致 原因是dns缓存导致的,ping这种方法也是不准确的,有弊端不建议使用,只适用于测试…

微服务学习-服务调用组件 OpenFeign 实战

1. OpenFeign 接口方法编写规范 1.1. 在编写 OpenFeign 接口方法时,需要遵循以下规范 1.1.1.1. 接口中的方法必须使用 RequestMapping、GetMapping、PostMapping 等注解声明 HTTP 请求的类型。 1.1.1.2. 方法的参数可以使用 RequestParam、RequestHeader、PathVa…

基于C语言的数组从入门到精通

简介:本篇文章主要介绍了一维数组,二维数组,字符数组的定义,数组的应用,数组的核心代码解析,适用于0基础的初学者. C语言数组 1.一维数组 1.1定义 1.1.1声明 语法:数据类型 数组名[数组大小];示例:int arr[5]; 1.1.2初始化 a.静态初始化 完全初始化:int arr[5] {1…

音频入门(二):音频数据增强

本文介绍了一些常见的音频数据增强方法,并给出了代码实现。 目录 一、简介 二、代码 1. 安装必要的库 2. 代码 3. 各函数的介绍 4. 使用方法 参考: 一、简介 音频数据增强是机器学习和深度学习领域中用于改善模型性能和泛化能力的技术。 使用数据…

Go中new和make的区别对比

Go 中 new 和 make 的区别 在 Go 语言中,new 和 make 都用于分配内存,但它们的使用场景和行为有显著的区别。 1. new 定义 new 是 Go 语言中的一个内置函数,用于分配内存并返回指向该内存的指针。new 分配的内存会被初始化为零值。 作用…

消息队列篇--通信协议篇--AMOP(交换机,队列绑定,消息确认,AMOP实现实例,AMOP报文,帧,AMOP消息传递模式等)

AMQP(Advanced Message Queuing Protocol,高级消息队列协议)是一种开放的、跨平台的消息传递协议,旨在提供一种标准化的方式在不同的消息代理和客户端之间进行消息传递。AMQP不仅定义了消息格式和路由机制,还规定了如何…

LLaMA-Factory 微调LLaMA3

LoRA介绍 LoRA(Low-Rank Adaptation)是一种用于大模型微调的技术, 通过引入低秩矩阵来减少微调时的参数量。在预训练的模型中, LoRA通过添加两个小矩阵B和A来近似原始的大矩阵ΔW,从而减 少需要更新的参数数量。具体来…

【项目实战】—— 高并发内存池设计与实现

目录 一,项目介绍 1.1 关于高并发内存池 1.2 关于池化技术 1.3 关于malloc 二,定长内存池实现 2.1 实现详情 ​2.2 完整代码 三,高并发内存池整体设计 四,threadcache设计 4.1 整体设计 4.2 哈希桶映射对齐规则 4.3 …

设计模式的艺术-代理模式

结构性模式的名称、定义、学习难度和使用频率如下表所示: 1.如何理解代理模式 代理模式(Proxy Pattern):给某一个对象提供一个代理,并由代理对象控制对原对象的引用。代理模式是一种对象结构型模式。 代理模式类型较多…

计算机网络 (54)系统安全:防火墙与入侵检测

前言 计算机网络系统安全是确保网络通信和数据不受未经授权访问、泄露、破坏或篡改的关键。防火墙和入侵检测系统(IDS)是维护网络系统安全的两大核心组件。 一、防火墙 定义与功能 防火墙是一种用来加强网络之间访问控制的特殊网络互联设备,它…

three.js+WebGL踩坑经验合集(3):THREE.Line的射线检测问题(不是阈值方面的,也不是难选中的问题)

笔者之所以要在标题里强调不是阈值方面,是因为网上的大多数文章提到线的射线检测问题,90%以上的文章都说是因为线太细所以难选中,然后让大家把线的阈值调大。 而本文所要探讨的问题则恰好相反,不是难选中,而是在某些角…

省市区三级联动

引言 在网页中,经常会遇到需要用户选择地区的场景,如注册表单、地址填写等。为了提供更好的用户体验,我们可以实现一个三级联动的地区选择器,让用户依次选择省份、城市和地区。 效果展示: 只有先选择省份后才可以选择…

快速搭建深度学习环境(Linux:miniconda+pytorch+jupyter notebook)

本文基于服务器端环境展开,使用的虚拟终端为Xshell。 miniconda miniconda是Anaconda的轻量版,仅包含Conda和Python,如果只做深度学习,可使用miniconda。 [注]:Anaconda、Conda与Miniconda Conda:创建和管…

BGP分解实验·11——路由聚合与条件性通告(3)

续接上(2)的实验。其拓扑如下: 路由聚合的负向也就是拆分,在有双出口的情况下,在多出口做流量分担是优选方法之一。 BGP可以根据指定来源而聚合路由,在产生该聚合路由的范围内的条目注入到本地BGP表后再向…

攻防世界easyRSA

解密脚本: p473398607161 q4511491 e17def extended_euclidean(a, b):if b 0:return a, 1, 0gcd, x1, y1 extended_euclidean(b, a % b)x y1y x1 - (a // b) * y1return gcd, x, ydef calculate_private_key(p, q, e):phi (p - 1) * (q - 1)gcd, x, y extend…

常见的多媒体框架(FFmpeg GStreamer DirectShow AVFoundation OpenMax)

1.FFmpeg FFmpeg是一个非常强大的开源多媒体处理框架,它提供了一系列用于处理音频、视频和多媒体流的工具和库。它也是最流行且应用最广泛的框架! 官方网址:https://ffmpeg.org/ FFmpeg 的主要特点和功能: 编解码器支持: FFmpe…

.NET MAUI进行UDP通信(二)

上篇文章有写过一个简单的demo&#xff0c;本次对项目进行进一步的扩展&#xff0c;添加tabbar功能。 1.修改AppShell.xaml文件&#xff0c;如下所示&#xff1a; <?xml version"1.0" encoding"UTF-8" ?> <Shellx:Class"mauiDemo.AppShel…

计算机网络之链路层

本文章目录结构出自于《王道计算机考研 计算机网络_哔哩哔哩_bilibili》 02 数据链路层 在网上看到其他人做了详细的笔记&#xff0c;就不再多余写了&#xff0c;直接参考着学习吧。 1 详解数据链路层-数据链路层的功能【王道计算机网络笔记】_wx63088f6683f8f的技术博客_51C…

YOLOv11改进,YOLOv11检测头融合DSConv(动态蛇形卷积),并添加小目标检测层(四头检测),适合目标检测、分割等任务

前言 精确分割拓扑管状结构例如血管和道路,对各个领域至关重要,可确保下游任务的准确性和效率。然而,许多因素使任务变得复杂,包括细小脆弱的局部结构和复杂多变的全局形态。在这项工作中,注意到管状结构的特殊特征,并利用这一知识来引导 DSCNet 在三个阶段同时增强感知…

Flutter android debug 编译报错问题。插件编译报错

下面相关内容 都以 Mac 电脑为例子。 一、问题 起因&#xff1a;&#xff08;更新 Android studio 2024.2.2.13、 Flutter SDK 3.27.2&#xff09; 最近 2025年 1 月 左右&#xff0c;我更新了 Android studio 和 Flutter SDK 再运行就会出现下面的问题。当然 下面的提示只是其…