数据结构之栈(Stack)

100 阅读1分钟

1. 概念

栈是一种遵从先进后出 (LIFO) 原则的有序集合;新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另一端为栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。

2. 特点:

  • 栈( stack )又称堆栈,是一种后进先出的有序集合,其中一端为栈顶,另一端为栈底,添加元素(称为压栈/入栈或进栈)时,将新元素压入栈顶,删除元素(称为出栈或退栈)时,将栈底元素删除并返回被删除元素。

  • 特点:先进后出,后进先出

  • 生活中的案例:一叠书、一叠盘子。

如图所示:

实现:

class Stack {
    constructor() {
        this.items = [];
    }
    // 入栈
    push(element) {
        this.items.push(element);
    }
    // 出栈
    pop() {
        return this.items.pop();
    }
    // 末位
    peek() {
        return this.items[this.items.length - 1];
    }
    // 是否为空栈
    isEmpty() {
        return !this.items.length;
    }
    // 尺寸大小
    size() {
        return this.items.length;
    }
    // 清空栈
    clear() {
        this.items = [];
    }
    // 打印栈数据
    print() {
        console.log(this.items.toString());
    }
}

// 实例化一个栈
const stack = new Stack();
console.log(stack.isEmpty); // true

// 添加元素
stack.push(5);
stack.push(8);

// 读取属性再添加
console.log(stack.peek); // 8
stack.push(11);
console.log(stack.size); // 3
console.log(stack.isEmpty); // false