当前位置:首页 > JavaScript

js 栈实现

2026-04-07 03:37:55JavaScript

栈的基本概念

栈(Stack)是一种遵循后进先出(LIFO)原则的线性数据结构。主要操作包括入栈(push)、出栈(pop)、查看栈顶元素(peek)和判断栈是否为空。

JavaScript 栈的实现

JavaScript 中可以通过数组或链表实现栈。以下是基于数组的栈实现代码示例:

js 栈实现

class Stack {
  constructor() {
    this.items = [];
  }

  // 入栈
  push(element) {
    this.items.push(element);
  }

  // 出栈
  pop() {
    if (this.isEmpty()) {
      return "栈为空";
    }
    return this.items.pop();
  }

  // 查看栈顶元素
  peek() {
    if (this.isEmpty()) {
      return "栈为空";
    }
    return this.items[this.items.length - 1];
  }

  // 判断栈是否为空
  isEmpty() {
    return this.items.length === 0;
  }

  // 返回栈的大小
  size() {
    return this.items.length;
  }

  // 清空栈
  clear() {
    this.items = [];
  }

  // 打印栈内容
  print() {
    console.log(this.items.toString());
  }
}

栈的使用示例

const stack = new Stack();
stack.push(10);
stack.push(20);
stack.push(30);

stack.print(); // 输出: 10,20,30
console.log(stack.pop()); // 输出: 30
console.log(stack.peek()); // 输出: 20
console.log(stack.size()); // 输出: 2

栈的应用场景

  • 函数调用栈
  • 表达式求值(如括号匹配)
  • 浏览器历史记录(前进/后退)
  • 撤销操作(Undo/Redo)

时间复杂度分析

  • 入栈(push):O(1)
  • 出栈(pop):O(1)
  • 查看栈顶(peek):O(1)
  • 判断空栈(isEmpty):O(1)

注意事项

  • JavaScript 数组本身已提供类似栈的操作(push/pop),直接使用数组也可实现栈功能。
  • 对于大规模数据,需注意数组实现的栈可能存在内存连续性问题,链表实现更适合动态扩容场景。

标签: js
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js 实现跳转

js 实现跳转

使用 window.location.href 进行跳转 通过修改 window.location.href 可以跳转到指定 URL,浏览器会加载新页面: window.location.hre…