当前位置:首页 > JavaScript

链表实现js

2026-02-28 20:09:18JavaScript

链表的基本概念

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

单向链表的实现

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

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

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

链表实现js

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 指针。

链表实现js

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 指针。

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
分享给朋友:

相关文章

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js实现报表

js实现报表

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

js手势实现

js手势实现

手势识别实现方法 在JavaScript中实现手势识别通常涉及监听触摸事件(touchstart、touchmove、touchend)或鼠标事件(mousedown、mousemove、mouseu…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的J…

js实现的游戏

js实现的游戏

JavaScript 游戏开发基础 JavaScript 是开发网页游戏的流行选择,因其无需插件即可在浏览器中运行。以下是一些关键技术和资源: HTML5 Canvas Canvas 提供了绘制图形…

js 实现图片轮播

js 实现图片轮播

基础实现方案 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS负责样式布局,JavaScript处理轮播逻辑。 <div class="…