栈的特性就是先进后出,根据这一特性,就会有一些考点:
例如给你一个入栈序列1 2 3 4 5;然后给出很多的选项,让你判断哪一个选项不是该序列的出栈序列,A:2 4 3 1 5 B:1 2 3 4 5 C:4 2 3 1 5 D:5 4 3 2 1 E:3 5 4 2 1
通过代码实现:
import java.util.Stack;
public class ModelFace<E> {
public boolean isOutOrder(int[] inOutOrder,int[] outOrder){
if (inOutOrder==null||outOrder==null||inOutOrder.length!=outOrder.length){
return false;
}
Stack<Integer> stack=new Stack<>();
int i=0,j=0;//i用来遍历inOutOrder,j用来遍历outOrder
while (i<inOutOrder.length-1){
if (stack.empty()){//判断当栈为空的时候,就遍历给定的数组,将给定数组的每一个数值进栈
stack.push(inOutOrder[i++]);
}
while (outOrder[j]!=stack.peek()&&i!=inOutOrder.length){
stack.push(inOutOrder[i++