• 栈是一种线性结构,遵从后进先出(LIFO)原则的有序集合。
  • 新增或待删除的元素都保存在栈的同一端,
  • 只能从一端添加元素,也只能从一端取出元素。这一端成为栈顶。

栈一般有如下方法:

interface Stack<T> {
  push(item: T): void;
  pop(): T | undefined;
  peek(): T | undefined;
  isEmpty(): boolean;
  getSize(): number;
}

使用数组实现栈

class ArrayStack<T> implements Stack<T> {
  #arr: T[] = [];
 
  push(item: T): void {
    this.#arr.push(item);
  }
 
  pop(): T | undefined {
    return this.#arr.pop();
  }
 
  peek(): T | undefined {
    return this.#arr[this.#arr.length - 1];
  }
 
  isEmpty() {
    return this.#arr.length === 0;
  }
 
  getSize() {
    return this.#arr.length;
  }
}

练习