栈是一种线性数据结构,其修改顺序是后进先出(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
    }
}