剑指Offter—用两个栈实现队列

170 阅读1分钟

题目:用两个栈实现队列

用两个栈实现队列一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入节点和在队列头部删除节点的功能。

解题思路

首先了解栈:先进后出,队列:先进先出的特性;这样就可以,通过队列每进一个元素,栈1入栈一个元素,当队列需要出一个元素的时候,将栈1中的元素入栈2,然后通过栈2弹出,这样可以通过2个栈实现元素的先进先出特性。

解题代码


    Stack<Integer> stack1 = new Stack<>();
    Stack<Integer> stack2 = new Stack<>();

    public void appendTail(int node) {
        stack1.push(node);
    }

    public int deleteHead() {
        if (stack2.isEmpty()) {
            while (stack1.empty() != true) {
                stack2.push(stack1.pop());
            }
        }
        if (stack2.empty() == true) {
            return -1;
        }

        return stack2.pop();
    }

后记

摘自《剑指offter》