码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer--用两个栈实现队列

时间:2018-04-15 13:34:31      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:队列   highlight   class   效果   用两个栈   不为   empty   return   用两个   

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();
    }
	
}

  

剑指offer--用两个栈实现队列

标签:队列   highlight   class   效果   用两个栈   不为   empty   return   用两个   

原文地址:https://www.cnblogs.com/zhaohuan1996/p/8846735.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!