栈是一种线性结构,遵从后进先出(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; } } 练习 20. 有效的括号 32. 最长有效括号 636. 函数的独占时间