当前位置:首页 > JavaScript

反转链表js实现

2026-04-07 14:33:29JavaScript

反转链表的 JavaScript 实现

反转链表是算法中的常见问题,以下是两种常用的实现方法:迭代法和递归法。

迭代法

迭代法通过遍历链表,逐个反转节点的指向来实现反转。

function reverseList(head) {
    let prev = null;
    let current = head;
    while (current !== null) {
        const next = current.next;
        current.next = prev;
        prev = current;
        current = next;
    }
    return prev;
}
  • 初始化 prevnullcurrent 为链表头节点 head
  • 遍历链表,保存当前节点的下一个节点 next
  • 将当前节点的 next 指向 prev,完成反转。
  • 移动 prevcurrent 指针,继续处理下一个节点。
  • 最终 prev 指向反转后的链表头节点。

递归法

递归法通过递归调用反转子链表,再处理当前节点。

反转链表js实现

function reverseList(head) {
    if (head === null || head.next === null) {
        return head;
    }
    const newHead = reverseList(head.next);
    head.next.next = head;
    head.next = null;
    return newHead;
}
  • 递归终止条件:当前节点为 null 或下一个节点为 null,直接返回当前节点。
  • 递归反转子链表,得到新的头节点 newHead
  • 将当前节点的下一个节点的 next 指向当前节点,完成反转。
  • 将当前节点的 next 置为 null,避免循环引用。
  • 返回新的头节点 newHead

示例用法

class ListNode {
    constructor(val, next = null) {
        this.val = val;
        this.next = next;
    }
}

// 创建链表 1 -> 2 -> 3 -> 4 -> 5
const head = new ListNode(1, new ListNode(2, new ListNode(3, new ListNode(4, new ListNode(5)))));

// 反转链表
const reversedHead = reverseList(head);

// 输出反转后的链表
let current = reversedHead;
while (current !== null) {
    console.log(current.val);
    current = current.next;
}
// 输出: 5 4 3 2 1

两种方法均能有效反转链表,迭代法空间复杂度为 O(1),递归法空间复杂度为 O(n)。根据实际需求选择合适的方法。

标签: 链表js
分享给朋友:

相关文章

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…

js实现轮播代码

js实现轮播代码

基础轮播实现 使用HTML、CSS和JavaScript创建一个简单的轮播效果。HTML部分定义轮播容器和图片元素。 <div class="carousel"> <div c…

js实现原理

js实现原理

JavaScript 实现原理 JavaScript 是一种解释型语言,其实现原理涉及多个核心组件和运行机制,包括引擎、运行时环境、事件循环等。 引擎与解释执行 现代 JavaScript 引擎(如…

js 实现全选

js 实现全选

实现全选功能的方法 使用 JavaScript 实现全选功能通常需要操作复选框(checkbox)的状态。以下是几种常见的实现方式。 通过 DOM 操作实现全选 // 获取全选复选框和子复选…

js实现复选框

js实现复选框

实现复选框的基本方法 使用HTML的<input type="checkbox">元素创建复选框,并通过JavaScript监听其状态变化。 <input type="checkb…