当前位置:首页 > JavaScript

反转链表js实现

2026-02-02 20:47:27JavaScript

反转链表的 JavaScript 实现

反转链表是常见的算法问题,可以通过迭代或递归两种方式实现。以下是两种方法的详细实现和解释。

反转链表js实现

迭代法

迭代法通过遍历链表并逐个反转节点指针实现反转。需要维护三个指针:prevcurrentnext

反转链表js实现

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;
}
  • 初始化指针prev 初始化为 nullcurrent 初始化为链表头 head
  • 遍历链表:每次迭代保存 current.nextnext,将 current.next 指向 prev,然后移动 prevcurrent
  • 返回新头节点:最终 prev 成为反转后的链表头。

递归法

递归法通过递归调用反转子链表,并调整指针方向。

function reverseListRecursive(head) {
    if (head === null || head.next === null) {
        return head;
    }
    const newHead = reverseListRecursive(head.next);
    head.next.next = head;
    head.next = null;
    return newHead;
}
  • 基线条件:如果链表为空或只有一个节点,直接返回 head
  • 递归反转:递归调用反转 head.next 后的链表,得到新头节点 newHead
  • 调整指针:将 head.next.next 指向 head,断开原 head.next 的链接。

示例测试

测试反转链表函数,确保其正确性。

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);
console.log(reversedHead); // 输出反转后的链表头

复杂度分析

  • 时间复杂度:两种方法均为 O(n),需遍历链表所有节点。
  • 空间复杂度:迭代法为 O(1),递归法为 O(n)(递归栈空间)。

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

相关文章

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterva…

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码…