两个队列实现栈&两个栈实现队列(JAVA)

两个栈实现队列

  

  题目描述

  用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
  
  思路:栈的特点时先进后出,队列的特点是先进先出。
  若此时有两个队列stack1,stack2,我们用stack1来存储入队的元素,而用stcak2来辅助进行pop()操作。
  
    public  void push(int node) {
        stack1.push(node);
    }

  对于pop操作,我需要先进入的元素先出来,若stcak1中按顺序存放着ABC,将其依次pop出来,放入stcak2中,就变成了CBA,此时再让stack2pop()出来元素,就满足了队列的要求。

  具体操作:

  1,看辅助栈stack2中是否还有元素,若有,直接pop出来,若没有,观察stack1中元素个数

  2,若stack1中元素个数>0,则将stack1中的元素一次pop,并push进stack2中。

  

    public int pop() {
        if(stack2.isEmpty()){
            while(!stack1.isEmpty()){
                stack2.push(stack1.pop());
            }
        }
        return stack2.pop();
    }

猜你喜欢

转载自www.cnblogs.com/ztqup666/p/9233506.html