前言
栈是比较常见的数据结构,遵循着FIFO(First In First Out)原则。即元素的插入或者删除都是从一端 进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)
栈在生活中比较常见的例子,比如弹夹,最后压入的子弹最先打出去,一开始压入的子弹最后打出。还有米缸,最后加入的大米最先被吃,一开始加入的大米最后吃。
栈如图所示
我们要实现一下栈的结构,就必须实现以下方法。
- 入栈 将元素加入栈顶
- 出栈 将栈顶的元素推出
- 获取栈顶元素 将栈顶的元素返回,但不在栈中删除
- 清空栈 清空栈内所有元素
- 获取栈长度 返回栈的长度
- 判断栈是否为空 判断栈是否含有元素
- 输出栈内元素 将栈内的元素用字符串的方式输出
数组方法实现一个栈
class Stach {
private items: any[];
constructor() {
this.items = [];
}
//入栈
push(item: any) {
this.items.push(item);
}
// 出栈
pop() {
return this.items.pop();
}
//返回栈顶元素
peek() {
return this.items[this.items.length - 1];
}
//清空栈内元素
clear() {
this.items = [];
}
//获取长度
size() {
return this.items.length;
}
//判断栈是否为空
isEmpty() {
return this.items.length === 0;
}
//站内元素字符串输出
toString() {
return this.items.toString();
}
}
由于items是用数组,所以他的时间复杂度为O(n)
下次介绍用对象实现一个栈。