栈
栈是一种线性数据结构,其修改顺序是后进先出(last in first out),因此也被成为 LIFO表。 在现实生活中可以映射到我们堆叠在桌子上的书、餐具柜中队列的餐盘之类。
我们可以用数组模拟栈:
class Static{
constructor(){
this.items = []
}
// 检查栈是否为空
get isEmpty(){
return !this.items.length
}
// 获取栈的长度
get size(){
return this.items.length
}
// 查看栈顶
get top(){
return this.items[this.items.length - 1]
}
// 入栈
push(val){
this.items.push(val)
return this.items
}
// 出栈
pop(){
return this.items.pop()
}
// 清空栈
clear(){
this.items.length = []
return this.items
}
}
队列
与栈相反,队列是修改顺序是先进先出(first in first out),称为 FIFO表。 在现实生活中可以映射到点餐队列、打印队列。
用数组模拟队列:
class Queue{
constructor(){
this.items = []
}
// 检查队列是否为空
get isEmpty(){
return !this.items.length
}
// 获取队列的长度
get size(){
return this.items.length
}
// 获取首元素
get first(){
return this.items[0]
}
// 获取尾元素
get last(){
return this.items[this.items.length - 1]
}
// 入队
enqueue(val){
this.items.push(val)
return this.items
}
// 出队
dequeue(){
return this.items.shift()
}
// 清空队列
clear(){
this.items.length = 0
}
}