栈是一种后进先出的数据结构,JavaScript没有栈结构,可以使用数组进行模拟;
基本功能
size()获取栈长度peek()获取栈顶元素push()入栈pop()出栈clear()清空栈
不使用数组原生方法,使用计数完成功能
/**
* value 栈
* size 返回栈长度
* peek 返回栈顶元素,不会修改栈
* push 添加新元素到栈顶,返回栈长度
* pop 移除栈顶元素,同时返回被移除的元素
* clear 清空栈内元素
* @class Stack
*/
const stack = Symbol('stack')
const count = Symbol('count')
class Stack {
constructor() {
this[stack] = []
this[count] = 0
}
value() {
return this[stack]
}
size() {
return this[count]
}
isEmpty() {
return this[count] === 0
}
peek() {
if (this.isEmpty()) {
console.log('栈为空')
return
}
return this[stack][this[count] - 1]
}
push(item) {
this[stack][this[count]] = item
this[count]++
return this[count]
}
pop() {
const temp = this[stack][this[count] - 1]
delete this[stack][--this[count]]
return temp
}
clear() {
this[stack] = []
this[count] = 0
}
}