栈属于线性结构,只是它的运算是在栈顶,也可以认为是运算受限的线性表结构,常见的线性还有线性表,堆,栈,串,队列,数组等等。java类的方法与递归等线程调度等都是在栈的结构运行。因此有必要深入了解栈。
- 这次输入一个入栈的有序数组,再弹出来一个数组,可以定义个函数,去判断是否为该栈弹出。
public static boolean isStackOrder(int[] pushA,int[] popA)
{
//考虑为null的情况
if(pushA.length == 0 || popA.length == 0 || pushA.length != popA.length)
{
return false;
}
Stack<Integer> stack = new Stack<Integer>();
//定义出栈数组的下表
int j = 0;
for(int i = 0;i < pushA.length;i ++)
{
//放入栈
stack.add(pushA[i]);
//根据出栈的序列出栈
while(!stack.isEmpty()&& stack.peek() == popA[j])
{
stack.pop();
j ++;
}
}
//判断栈是否为空
return stack.isEmpty();
}
这个方法十分的巧妙。