概念
栈是一种操作“受限”的线性表,具有先进后出的特性
应用场景
- word撤销
- 网页后退
- 语义校验(括号是否匹配等)
- 函数调用
- 表达式求值
代码实现
/**
* @author qcg
* @version 2019/5/13.
* @description 基于数组实现的栈
*/
public class MyArrayStack {
private String[] items;
// 栈中元素的个数
private int count;
// 栈的大小
private int size;
// 初始化数组,申请一个大小为size的数组空间
public MyArrayStack(int size) {
this.items = new String[size];
this.size = size;
this.count = 0;
}
// 入栈操作
public boolean push(String item) {
// 数组空间不够用了,直接返回false,入栈失败
if (count == size) return false;
// 将item放到下标为count的位置,并且count加一
items[count] = item;
++count;
return true;
}
// 出栈操作
public String pop() {
// 栈为空,则直接返回null
if (count == 0) return null;
// 返回下标为count-1的数组元素,并且栈中元素个数count减一
String res = items[count - 1];
--count;
return res;
}
public static void main(String[] args) {
MyArrayStack stack = new MyArrayStack(3);
stack.push("1");
stack.push("2");
stack.push("3");
System.out.println(stack.pop());
}
}