stack 特点
- 先进后出
- 支持push pop peek操作
stack 如何实现
public class ArrayStack {
private String[] items; // 数组
private int count; // 栈中元素个数
private int n; //栈的大小
// 初始化数组,申请一个大小为n的数组空间
public ArrayStack(int n) {
this.items = new String[n];
this.n = n;
this.count = 0;
}
// 入栈操作
public boolean push(String item) {
// 数组空间不够了,直接返回false,入栈失败。
if (count == n) return false;
// 将item放到下标为count的位置,并且count加一
items[count] = item;
++count;
return true;
}
// 出栈操作
public String pop() {
// 栈为空,则直接返回null
if (count == 0) return null;
// 返回下标为count-1的数组元素,并且栈中元素个数count减一
String tmp = items[count-1];
--count;
return tmp;
}
}
stack 典型用例
- 浏览器的前进后退
- 表达式求值(34+13*9+44-12/3)
stack leetCode相关题
- 使用queue实现stack(20 easy https://leetcode.com/problems/valid-parentheses/)
- 判断括号的是否合法(225 easy https://leetcode.com/problems/implement-stack-using-queues/)