当前位置:首页 > JavaScript

链表实现js

2026-02-28 20:09:18JavaScript

链表的基本概念

链表是一种线性数据结构,由一系列节点组成,每个节点包含数据部分和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,动态增删节点更高效。

单向链表的实现

定义节点类 每个节点包含 valuenext 属性,next 指向下一个节点或 null(尾节点)。

class ListNode {
  constructor(value) {
    this.value = value;
    this.next = null;
  }
}

初始化链表 创建头节点并逐步追加节点。

const head = new ListNode(1);
head.next = new ListNode(2);
head.next.next = new ListNode(3);

链表常用操作

遍历链表 通过循环访问每个节点,直到 nextnull

let current = head;
while (current !== null) {
  console.log(current.value);
  current = current.next;
}

插入节点 在指定位置插入新节点,需调整相邻节点的 next 指针。

function insertAfter(prevNode, value) {
  const newNode = new ListNode(value);
  newNode.next = prevNode.next;
  prevNode.next = newNode;
}

删除节点 修改前驱节点的 next 指针以跳过待删除节点。

function deleteNode(head, value) {
  if (head.value === value) return head.next;
  let current = head;
  while (current.next !== null) {
    if (current.next.value === value) {
      current.next = current.next.next;
      return head;
    }
    current = current.next;
  }
  return head;
}

双向链表的实现

双向链表的节点包含指向前驱和后继的指针。

class DoublyListNode {
  constructor(value) {
    this.value = value;
    this.prev = null;
    this.next = null;
  }
}

插入操作示例 需同时维护 prevnext 指针。

链表实现js

function insertAfter(node, value) {
  const newNode = new DoublyListNode(value);
  newNode.next = node.next;
  newNode.prev = node;
  if (node.next) node.next.prev = newNode;
  node.next = newNode;
}

链表的应用场景

  • 实现队列、栈等抽象数据类型。
  • 内存管理中的动态内存分配。
  • 需要频繁插入/删除的场景(如撤销操作记录)。

性能注意事项

  • 访问元素需遍历,时间复杂度为 O(n)。
  • 插入/删除头部节点为 O(1),其他位置需先查找。
  • 双向链表占用更多内存,但支持反向遍历。

以上代码可直接在浏览器或 Node.js 环境中运行,实现基础的链表功能。实际开发中可根据需求扩展更多方法,如反转链表、检测环等算法。

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

相关文章

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swipe…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <…

js实现显示隐藏

js实现显示隐藏

显示隐藏的实现方法 在JavaScript中,实现元素的显示和隐藏可以通过多种方式完成。以下是几种常见的方法: 修改CSS的display属性 通过改变元素的display属性可以在none(隐藏)…