当前位置:首页 > JavaScript

js实现链表思路

2026-02-02 19:34:45JavaScript

实现链表的基本结构

链表由节点(Node)组成,每个节点包含两个部分:

  • value:存储数据
  • next:指向下一个节点的引用(默认null
class Node {
  constructor(value) {
    this.value = value;
    this.next = null;
  }
}

初始化链表

创建链表类,初始化头节点(head)和长度(size):

class LinkedList {
  constructor() {
    this.head = null;
    this.size = 0;
  }
}

插入节点

尾部插入
遍历链表找到最后一个节点,将新节点链接到其next

js实现链表思路

append(value) {
  const newNode = new Node(value);
  if (!this.head) {
    this.head = newNode;
  } else {
    let current = this.head;
    while (current.next) {
      current = current.next;
    }
    current.next = newNode;
  }
  this.size++;
}

头部插入
将新节点的next指向原头节点,并更新头节点为新节点:

prepend(value) {
  const newNode = new Node(value);
  newNode.next = this.head;
  this.head = newNode;
  this.size++;
}

删除节点

按值删除
遍历链表,找到目标节点的前驱节点,修改其next指向:

js实现链表思路

remove(value) {
  if (!this.head) return;

  if (this.head.value === value) {
    this.head = this.head.next;
    this.size--;
    return;
  }

  let current = this.head;
  while (current.next) {
    if (current.next.value === value) {
      current.next = current.next.next;
      this.size--;
      return;
    }
    current = current.next;
  }
}

查找节点

遍历链表,匹配目标值:

contains(value) {
  let current = this.head;
  while (current) {
    if (current.value === value) {
      return true;
    }
    current = current.next;
  }
  return false;
}

遍历链表

输出所有节点的值:

print() {
  let current = this.head;
  const values = [];
  while (current) {
    values.push(current.value);
    current = current.next;
  }
  console.log(values.join(' -> '));
}

示例用法

const list = new LinkedList();
list.append(1);
list.append(2);
list.prepend(0);
list.print(); // 输出: 0 -> 1 -> 2
list.remove(1);
list.print(); // 输出: 0 -> 2
console.log(list.contains(2)); // 输出: true

注意事项

  • 插入/删除时需处理边界条件(如空链表或头节点操作)。
  • 双向链表需额外维护prev指针,循环链表需将尾节点的next指向头节点。

标签: 思路链表
分享给朋友:

相关文章

php 实现链表

php 实现链表

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

vue弹窗组件实现思路

vue弹窗组件实现思路

弹窗组件的基本结构 Vue弹窗组件通常由三部分组成:模板(HTML)、样式(CSS)和逻辑(JavaScript)。弹窗需要具备显示/隐藏控制、内容插槽、遮罩层等基础功能。 <template…

vue下拉加载实现思路

vue下拉加载实现思路

vue下拉加载实现思路 监听滚动事件 通过监听滚动事件判断是否滚动到底部,触发加载更多数据。在mounted钩子中绑定事件,beforeDestroy钩子中解绑事件,避免内存泄漏。 mounted(…

php限时抢购实现思路

php限时抢购实现思路

限时抢购功能实现思路 限时抢购是电商系统中常见的促销方式,通过PHP实现需要考虑并发控制、库存管理、时间限制等关键点。 数据库设计 创建商品表时需包含抢购专用字段: CREATE TABLE `f…

php如何实现链表

php如何实现链表

实现链表的基本结构 在PHP中,链表可以通过类和对象来实现。每个节点是一个对象,包含数据和指向下一个节点的引用。 class ListNode { public $data; pub…

链表的实现js

链表的实现js

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