Skip to content

栈结构

基础知识

栈,英语为 Stack,这是一种基本数据结构,也是属于线性的数据结构。其特点为:

栈主要支持以下几种基本操作:

  1. push:将一个元素添加到栈的顶端。
  2. pop:移除并返回栈顶元素。
  3. peek(或 top):返回栈顶元素但不移除它。
  4. isEmpty:检查栈是否为空。
  5. size:返回栈中元素的数量。

代码实现

JS 中没有直接提供栈这种数据结构,因此只有我们自己进行模拟,可以基于数组或链表来实现栈结构。

class Stack {
constructor(...args) {
this.stack = [...args] // 栈内部使用数组来存储数据
}
push(...items) {
return this.stack.push(...items)
}
pop() {
return this.stack.pop()
}
size() {
return this.stack.length
}
peak() {
return this.isEmpty() ? undefined : this.stack[this.size() - 1]
}
isEmpty() {
return this.size() === 0
}
}

测试用例:

const stack = new Stack(1, 2, 3, 4, 5)
console.log(stack.pop()) // 5
console.log(stack.peak()) // 4
console.log(stack.isEmpty()) // false
console.log(stack.size()) // 4
console.log(stack.push(100, 200, 300)) // 7
console.log(stack.size()) // 7
console.log(stack.peak()) // 300
console.log(stack.pop()) // 300
console.log(stack.pop()) // 200
console.log(stack.pop()) // 100

栈应用场景

  1. 历史记录
  2. 撤销操作

-EOF-