当前位置:首页 > JavaScript

js实现反向链表

2026-02-02 14:19:43JavaScript

反转链表的实现方法

反转链表是常见的算法问题,以下是使用JavaScript实现的几种方法。

js实现反向链表

迭代法

迭代法通过遍历链表并逐个反转节点指针实现。该方法时间复杂度为O(n),空间复杂度为O(1)。

js实现反向链表

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(n)(递归栈空间)。

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)。

function reverseList(head) {
  if (!head) return null;
  const stack = [];
  let current = head;
  while (current) {
    stack.push(current);
    current = current.next;
  }
  const newHead = stack.pop();
  current = newHead;
  while (stack.length > 0) {
    const node = stack.pop();
    current.next = node;
    current = node;
  }
  current.next = null;
  return newHead;
}

注意事项

  • 处理空链表或单节点链表的边界情况。
  • 迭代法更节省内存,适合长链表。
  • 递归代码简洁但可能有栈溢出风险。

以上方法均可实现链表反转,根据实际场景选择合适方案。

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

相关文章

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

使用js实现

使用js实现

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

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

php 实现链表

php 实现链表

PHP 实现链表的方法 链表是一种线性数据结构,由节点组成,每个节点包含数据和指向下一个节点的指针。PHP 中可以通过类和对象来实现链表。 定义链表节点类 创建一个 ListNode 类,用于表示链…

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…