栈的概念
栈是数据结构中基础数据结构:
- 一种遵循后进先出原则的有序集合,指的是只能从栈的顶端进行数据到的操作
- 添加新元素的一端称为栈顶,另一端称为栈底。
- 操作栈元素时,只能从栈顶操作(添加、移除和取值)
反正就是一种先进后出的数据结构。
图示:
- 入栈
- 出栈
栈的实现
我们需要实现以下功能:
- push() 入栈
- pop() 出栈
- top() 获取栈顶值
- size() 获取栈的元素个数
- clear() 清空栈
首先用创建一个栈类
class Stack {
constructor() {
// 记录栈数据
this.data = []
// 记录栈的数量
this.count = 0
}
}
入栈
push(item) {
// 方式1 不推荐
// this.data.push() 性能低
// 方式2 需要再获取数据长度,性能偏低
// this.data[this.data.length] = item
// 方式3 性能最优
this.data[this.count] = item
this.count++
}
出栈
pop() {
// 先判断栈中是否还有数据
if(this.isEmpty()) {
console.log('栈为空')
return
}
// 移除栈顶值
// 方式1
// return this.data.pop()
// 方式2
// const temp = this.data[this.count-1]
// delate this.data[this.count-1]
// this.count--
// 方式3 合并写法
const temp = this.data[this.count-1]
delate this.data[--this.count]
}
isEmpty() {
return this.count === 0
}
获取栈顶值
top() {
// 判断栈是否为空
if(this.isEmpty()) {
return
}
return this.data[this.count - 1]
}
获取栈的元素个数
size() {
return this.count
}
清空栈
clear() {
this.count = 0;
this.data = []
}