算法4(力扣206)-反转链表

server/2025/1/20 3:11:27/

1、问题

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

2、采用例子

        输入:head = [1,2]

        输出:[2,1]

3、实现思路

        改变链表箭头的指向

4、具体步骤

(1)定义链表

        

(2)定义头结点

        

(3)实现函数

        1)空链表直接返回

                

        2)非空链表

               

                        (这里用123为例)

                ①创建一个临时变量,用于反转时的最终指向

        ​​​​​​​        

                ②创建当前节点指向头结点

        ​​​​​​​        

                ③进入循环(当前节点非空时,进入循环)

        ​​​​​​​            

                ④存储当前节点的下一节点(否则反转箭头时会丢失)

                

                ⑤让当前节点指向临时变量(反转箭头)

        ​​​​​​​        

                ⑥反转一个箭头后,当前节点后移(将当前节点的值赋给临时变量,类似于之前常用的cur=cur.next)

        ​​​​​​​        

                ⑦临时变量的指针也后移,方便非空时进行下一次反转箭头

                       

                ⑧循环外,打印并返回新链表

                

5、完整代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>反转链表</title>
</head>
<body><p>给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。</p><p>输入:head = [1,2]输出:[2,1]</p><script>class ListNode{constructor(val,next){this.val = valthis.next = next}}let head = new ListNode(1)head.next = new ListNode(2)// console.log(head);reverseList(head)function reverseList(head){if(!head) return head;//新链表的最后一位(临时变量)let pre = nulllet cur = headwhile (cur) {// nxt用于存储下一个元素nxt = cur.next// 反转链表箭头cur.next = pre// 新链表后移一位(让新链表的最后一位指针指向当前节点的前一位)pre = cur// 当前节点后移cur = nxt}  console.log(pre);return pre}</script>
</body>
</html>

6、力扣通过代码


var reverseList = function(head) {if(!head) return head;//新链表的最后一位(临时变量)let pre = nulllet cur = headwhile (cur) {// nxt用于存储下一个元素nxt = cur.next// 反转链表箭头cur.next = pre// 新链表后移一位(让新链表的最后一位指针指向当前节点的前一位)pre = cur// 当前节点后移cur = nxt}  console.log(pre);return pre
};


http://www.ppmy.cn/server/159789.html

相关文章

MySQL 篇 - Java 连接 MySQL 数据库并实现数据交互

在现代应用中&#xff0c;数据库是不可或缺的一部分。Java 作为一种广泛使用的编程语言&#xff0c;提供了丰富的 API 来与各种数据库进行交互。本文将详细介绍如何在 Java 中连接 MySQL 数据库&#xff0c;并实现基本的数据交互功能。 一、环境准备 1.1 安装 MySQL 首先&am…

如何选择合适的服务器?服务器租赁市场趋势分析

服务器租赁市场概览 服务器租赁 market可以分为两种类型&#xff1a;按小时、按月和按年&#xff0c;每种模式都有其特点和适用场景&#xff0c;按小时租赁是最经济实惠的选择&#xff0c;适用于短期需求&#xff1b;按月租赁则适合中长期使用&#xff1b;而按年租赁则是最灵活…

AI编程工具使用技巧——通义灵码

活动介绍通义灵码1. 理解通义灵码的基本概念示例代码生成 2. 使用明确的描述示例代码生成 3. 巧妙使用注释示例代码生成 4. 注意迭代与反馈原始代码反馈后生成优化代码 5. 结合生成的代码进行调试示例测试代码 其他功能定期优化生成的代码合作与分享结合其他工具 总结 活动介绍…

GPT-4o背后的语音技术

GPT-4o背后的语音技术 GPT-4o是一个any2any的多模态模型,能够接受文本、音频、图像、视频等多模态输入,也能够生成包含文本、语音、图像和视频等混合内容的多模态输出。本文主要谈语音多模态的实现,并分享一些对于语音研究未来发展的看法。 GPT-4o (“o” 代表 “omni”) …

Day09-后端Web实战——部门管理开发Logback日志技术

目录 部门管理开发1. 删除部门1.1 需求分析 1.2 思路分析1.2.1 思路说明1.2.1 简单参数接收 1.3 代码实现1.4 Mybatis中的#与$ 2. 新增部门2.1 需求分析2.2 思路分析2.2.1 思路说明2.2.2 json参数接收 2.3 代码实现 3. 修改部门3.1 查询回显3.1.1 需求分析3.1.2 思路分析3.1.2.…

【MySQL】表操作

表操作 一、创建表 1、语句2、语句介绍3、注意事项4、介绍5、示例 二、查看表结构 1、语句2、介绍3、返回的信息4、示例 三、添加字段 1、语句2、语句介绍3、示例 四、修改 1、语句2、语句介绍3、示例 五、删除 1、语句2、示例 六、修改表名 1、语句2、语句介绍3、示例 七、删…

【JVM-6】JVM 监控工具 jstat 的使用和具体应用案例

在 Java 应用开发和运维中&#xff0c;监控 JVM 的运行状态是确保应用性能和稳定性的关键。jstat 是 JDK 自带的一个轻量级命令行工具&#xff0c;用于监控 JVM 的运行时状态&#xff0c;特别是垃圾回收&#xff08;GC&#xff09;和内存使用情况。与图形化工具&#xff08;如 …

C++实现设计模式---装饰器模式 (Decorator)

装饰器模式 (Decorator) 装饰器模式 是一种结构型设计模式&#xff0c;它允许动态地将责任附加到对象上&#xff0c;既可以在运行时给一个对象添加功能&#xff0c;又不会影响其他对象的功能。 意图 动态地扩展对象的功能。避免创建过多的子类&#xff0c;通过装饰器来“包装…