12.19

用栈实现队列

思路

主要关注栈的先进后出特性,及队列的先进先出特性。

需要两个栈完成操作,一个为入栈,一个为出栈。入栈负责存数,出栈负责出数。数字进入栈,第二次从入栈进出栈,则完成顺序颠倒。

需要注意的是,若出栈栈内不为空则直接完成pop,peek操作。若出栈为空,则将入栈栈内全部数存入出栈。

总结

学习栈和队列的基础知识。

代码

    Stack<Integer> stIn;
    Stack<Integer> stOut;
    public MyQueue() {
        stIn=new Stack<>();
        stOut=new Stack<>();
    }

    public void push(int x) {
        stIn.add(x);
    }

    public int pop() {
        if (!stOut.isEmpty()) return stOut.pop();
        while (!stIn.isEmpty()){
            stOut.add(stIn.pop());
        }
        return stOut.pop();
    }

    public int peek() {
        if (!stOut.isEmpty()) return stOut.peek();
        while (!stIn.isEmpty()){
            stOut.add(stIn.pop());
        }
        return stOut.peek();
    }

    public boolean empty() {
        if (stOut.isEmpty() && stIn.isEmpty()) return true;
        else return false;
    }

你可能感兴趣的:(java)