栈和队列之用2个栈实现一个队列

64 阅读1分钟
import java.util.Stack;

/**
 * @author chenyu
 * 题目:编写一个类,用2个栈实现一个队列,支持队列的基本操作(add poll peek)
 * 思路:栈的特点是先进后出,而队列是先进先出,我们用两个栈真好把顺序反过来实现类似队列的操作,如下,将1-5依次压入stackPush,
 * 再讲5-1倒入stackPop,从stackPop弹出时,顺序就像队列一样
 *     5                 1
 *     4                 2
 *     3                 3
 *     2                 4
 *     1                 5
 * stackPush  stackPop
 * 必须做到下面2点
 * 1、如果stackPush往stackPop里面压入数据,那么必须一次性把stackPush中的数据全部压入
 * 2、如果stackPop不为空,stackPush绝对不能向stackPop中压入数据
 */
public class TwoStacksQueue {
       public Stack<Integer> stackPush;
       public Stack<Integer> stackPop;
       public TwoStacksQueue(){
    	   stackPush=new Stack<Integer>();
    	   stackPop=new Stack<Integer>();
       }
       public void add(int value){
    	   stackPush.push(value);
       }
       public int poll(){
    	   if(s