数据结构 - 栈
2020-03-03 本文已影响0人
Super曲江龙Kimi
![](https://img.haomeiwen.com/i3875785/19541d4c1a597545.png)
使用arraylist来创建stack是因为push和pop操作都只在尾部操作,这样数组的效率是最高的。使用双向链表也可以,单向链表删除需要从头开始找到尾
class Stack {
constructor() {
this.list = new ArrayList();
}
// 清空栈
clear() {
this.list.clear();
}
// 获取size
getSize() {
return this.list.getSize();
}
// 判断是否为空
isEmpty() {
return this.list.isEmpty();
}
// 入栈
// 由于是从最后插入,数组不需要挪位置,所以复杂度:O(1)
push(ele) {
this.list.add(ele);
}
// pop出栈
// 数组删除最后一个也不需要挪位置 复杂度:O(1)
pop() {
return this.list.remove(this.list.getSize() - 1);
}
// 获取栈顶元素 复杂度:O(1)
top() {
return this.list.get(this.list.getSize() - 1);
}
}