认识栈结构
栈(stack),它是一种受限的线性结构,后进先出(LIFO)
- 其限制是仅允许在 表的一端 进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。
- LIFO(last in first out)表示就是后进入的元素, 第一个弹出栈空间。 类似于自动餐托盘, 最后放上的托盘, 往往先把拿出 去使用。
- 向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;
- 从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
typescript 实现栈
interface IStack<T> {
push(element: T): void;
pop(): T | undefined;
peek(): T | undefined;
isEmpty(): boolean;
size(): number;
}
class ArrayStack<T = any> implements IStack<T> {
private data: T[] = [];
push(element: T): void {
this.data.push(element);
}
pop(): T | undefined {
return this.data.pop();
}
// 返回栈顶元素
peek(): T | undefined {
return this.data[this.data.length - 1];
}
// 判断是否为空
isEmpty(): boolean {
return this.data.length === 0;
}
size(): number {
return this.data.length;
}
}