剑指offer_刷题记录_9用两个栈实现队列

题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。
push为入栈操作
pop为出栈操作
队列操作的顺序为 先进先出 堆栈的操作顺序为先进后出
思路:如果用两个栈实现一个队列,那么一个栈处理入栈操作(a-b-c-d),一个栈处理出栈操作,顺序变为(d-c-b-a)->(a-b-c-d)。那么出栈顺序和入栈顺序是相同的,从而实现先进先出顺序。
代码:

import java.util.Stack;

public class Solution {
    //构建in 栈处理入栈操作
    Stack<Integer> in = new Stack<Integer>();
    //构建out栈处理出栈操作
    Stack<Integer> out = new Stack<Integer>();
    public void push(int node) {
        in.push(node);
    }
    public int pop() throws Exception {
        if (out.isEmpty())
            while (!in.isEmpty())
                out.push(in.pop());
        if (out.isEmpty())
            throw new Exception("queue is empty");
        return out.pop();
    }
}

你可能感兴趣的:(剑指offer)