##题目描述
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)
##解题思路
1,按照顺序持续入栈,直到发现和出栈第一个元素相同的为止,弹出,接着判断
2,这时候就有两种情况,第一种就是//1,2,3,4,5和3,2,1,4,5这种情况弹完3,弹之前的 ,然后之后的入栈再弹。第二种情况是 //1,2,3,4,5和3,4,5,1,2这种情况,弹完3,入栈之后的,弹出,再弹之前的。总结起来就是逐个比较即可,当前没有接着入栈,如果到最后栈还没弹完,说明该弹出序列不是该压入序列的正确弹出。
##代码实现

/**
 * 
 */
package 栈和队列;

import java.util.Stack;

/**
 * <p>
 * Title:IsPopOrder
 * </p>
 * <p>
 * Description:
 * </p>
 * 
 * @author 田茂林
 * @data 2017年8月22日 上午11:03:06
 */
public class IsPopOrder {
	Stack<Integer> stack = new Stack<Integer>();
	public boolean isPopOrder(int[] pushA, int[] popA) {
		if (pushA == null || popA == null || pushA.length < 1
				|| popA.length < 1) {
			return false;// 非空判断
		}
		int index = 0;
		for (int i = 0; i < pushA.length; i++) {
			stack.push(pushA[i]);               //1,2,3,4,5和3,4,5,1,2这种情况
			while(!stack.isEmpty()&& stack.peek() == popA[index]) {    //1,2,3,4,5和3,2,1,4,5这种情况
				stack.pop();
				index++;
			}
		}
		return stack.isEmpty();   //如果全部正常弹出,则为真,按照该序列,栈并没有弹出到空为止则不是
	}
}