用两个栈实现一个队列

思路

设两个栈分别为stack1和stack2,入队时,就把元素加入到stack1里面,当出队时,就把stack1里面的元素全部放到stack2里面,最后弹出stack1里面的元素,即为对首元素,注意这个时候stack2里面的元素的顺序是入队的元素,如果需要继续执行出队操作,直接弹出stack2栈顶的元素即可。


用两个栈实现一个队列_第1张图片
Paste_Image.png
public class solution{
        Stack stack1=new Stack();
        Stack stack2=new Stack();
        public void push(int node){
               stack1.push(node);
         }
         public int pop(){
                if(stack2.isEmpty()){
                    while(!stack1.isEmpty()){
                        stack2.push(stack1.pop());
                   }
                  }
                  return stack2.pop();
         }
}

你可能感兴趣的:(用两个栈实现一个队列)