9、用两个栈实现队列

class CQueue {
    private Stack<Integer> inStack;
    private Stack<Integer> outStack;
    private int size = 0;
    public CQueue() {
        inStack = new Stack<>();
        outStack = new Stack<>();
        size = 0;
    }


    public void appendTail(int value) {
        size++;
        inStack.push(value);
    }

    public int deleteHead() {
        if (size == 0){
           return -1;
        }else if (outStack.isEmpty()){
            moveElementFromInToOut();
        }
        size--;
        return outStack.pop();

    }

    private void moveElementFromInToOut() {
        while (!inStack.isEmpty()){
            outStack.push(inStack.pop());
        }
    }
}

/**
 * Your CQueue object will be instantiated and called as such:
 * CQueue obj = new CQueue();
 * obj.appendTail(value);
 * int param_2 = obj.deleteHead();
 */
posted @ 2021-04-21 22:20  backTraced  阅读(39)  评论(0)    收藏  举报