当前位置:首页 > 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 实现vue模板

js 实现vue模板

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

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 c…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…