zoukankan      html  css  js  c++  java
  • 剑指offer--用两个栈实现队列

    import java.util.Stack;
    /*
     * 栈是先进后出,队列是先进先出。所以两个栈相互配合要实现先进先出的效果。用两个栈正好能把顺序反过来实现类似队列的操作。
     * 1、如果stack1要往stack2中压入数据,那么必须一次性把stack1中的数据全部压入
     * 2、如果stack2不为空,stack1绝对不能向stack2中压入数据
     */
    public class Main8 {
    
    	Stack<Integer> stack1;
        Stack<Integer> stack2;
        
        public Main8() {
        	stack1 = new Stack<Integer>();
        	stack2 = new Stack<Integer>();
        }
        
        public void push(int node) {
            stack1.push(node);
        }
        
        public int pop() {
            if(stack1.empty()&&stack2.empty()){
                throw new RuntimeException("Queue is Empty!");
            }
            //出队时在栈2为空的前提下,保障一次性将栈1的内容压入栈2
            if(stack2.empty()){
                while(!stack1.empty()){
                    stack2.push(stack1.pop());
                }
            }
            return stack2.pop();
        }
        
        public int peek() {
        	if(stack1.empty()&&stack2.empty()){
                throw new RuntimeException("Queue is Empty!");
            }
            //出队时在栈2为空的前提下,保障一次性将栈1的内容压入栈2
            if(stack2.empty()){
                while(!stack1.empty()){
                    stack2.push(stack1.pop());
                }
            }
            return stack2.peek();
        }
    	
    }
    

      

  • 相关阅读:
    GSM和GPRS的区别
    IP规划和VLSM子网划分例题
    20190806-sed面试题
    yum.rpm一点点
    实验:基于http的yum源
    vim编辑二进制文件
    关于find的-perm
    误删tree命令如何恢复
    删除Linux的依赖库并进入救援模式恢复
    第六天、用户、组、权限、grep
  • 原文地址:https://www.cnblogs.com/zhaohuan1996/p/8846735.html
Copyright © 2011-2022 走看看