🌟 JavaScript 常见数据结构入门:5 种结构 + 简单例子

77 阅读2分钟

在前端开发中,我们经常和数据打交道。而数据结构,就是组织和管理数据的方式。理解基本的数据结构,能让你写出更高效、更清晰的代码。

今天我们就用最简单的 JS 代码,带你认识五种常见数据结构:

✅ 线性结构:数组、栈、队列、链表
✅ 非线性结构:树(二叉树)


1. 数组(Array)—— 最基础的线性结构

数组是 JS 内置的数据结构,元素按顺序存储,通过索引访问。

let arr = [10, 20, 30];
console.log(arr[1]); // 输出 20
  • 特点:支持随机访问,插入/删除较慢。
  • 适用场景:已知长度、频繁读取的数据集合。

2. 栈(Stack)—— 后进先出(LIFO)

想象一摞书,只能从顶部拿或放。JS 可用数组模拟:

let stack = [];
stack.push(1);  // 入栈
stack.push(2);
console.log(stack.pop()); // 出栈 → 输出 2
  • 操作push() 入栈,pop() 出栈。
  • 用途:函数调用栈、撤销操作、括号匹配等。

3. 队列(Queue)—— 先进先出(FIFO)

像排队买奶茶,先来的先走。JS 用 push + shift 模拟:

let queue = [];
queue.push('A');  // 入队
queue.push('B');
console.log(queue.shift()); // 出队 → 输出 'A'
  • 注意shift() 效率较低,实际项目可用双端队列优化。
  • 用途:任务调度、消息队列、广度优先搜索(BFS)。

4. 链表(Linked List)—— 节点连成线

每个节点包含指向下一个节点的引用,不连续存储。

// 创建两个节点
let node1 = { value: 1, next: null };
let node2 = { value: 2, next: null };

// 连接它们
node1.next = node2;

console.log(node1.next.value); // 输出 2
  • 优点:插入/删除快(只需改指针)。
  • 缺点:不能直接通过索引访问。
  • 用途:实现栈/队列、LRU 缓存等。

5. 树(Tree)—— 层级结构(以二叉树为例)

树由节点组成,每个节点最多有两个子节点(左、右)。

let tree = {
  value: 1,
  left: { value: 2, left: null, right: null },
  right: { value: 3, left: null, right: null }
};

console.log(tree.left.value);  // 输出 2
console.log(tree.right.value); // 输出 3
  • 特点:非线性,适合表示层级关系。
  • 用途:DOM 树、文件系统、搜索算法(如二叉搜索树)。

✅ 总结对比

结构特点JS 简单实现
数组连续存储,索引访问[1, 2, 3]
后进先出push() / pop()
队列先进先出push() / shift()
链表节点+指针{value, next}
层级结构{value, left, right}