当前位置:首页 > JavaScript

js实现反向链表

2026-02-02 14:19:43JavaScript

反转链表的实现方法

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

迭代法

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

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实现轮播

js实现轮播

实现基础轮播效果 使用HTML结构创建轮播容器和图片元素: <div class="carousel"> <div class="carousel-inner">…

jquery.js

jquery.js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它的设计宗旨是“Write Less, Do Mor…

js实现倒计时

js实现倒计时

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

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…