当前位置:首页 > JavaScript

反转链表js实现

2026-03-15 21:10:35JavaScript

反转链表的 JavaScript 实现

反转链表是数据结构中的常见操作,以下是几种实现方法:

迭代法

通过遍历链表并逐个反转节点指针实现:

function reverseList(head) {
    let prev = null;
    let current = head;
    while (current !== null) {
        const nextTemp = current.next;
        current.next = prev;
        prev = current;
        current = nextTemp;
    }
    return prev;
}

该方法时间复杂度为 O(n),空间复杂度为 O(1)。

反转链表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;
}

递归实现的时间复杂度为 O(n),空间复杂度为 O(n)(递归栈空间)。

反转链表js实现

双指针法

优化迭代法的另一种写法:

function reverseList(head) {
    let [prev, curr] = [null, head];
    while (curr) {
        [curr.next, prev, curr] = [prev, curr, curr.next];
    }
    return prev;
}

使用解构赋值简化指针交换操作。

注意事项

  1. 处理空链表或单节点链表的边界情况
  2. 反转后原链表的头节点应指向 null
  3. 递归实现可能导致栈溢出(超长链表情况下)

实际应用中可根据具体场景选择迭代(推荐)或递归实现。

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

相关文章

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callbac…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…