剑指offer

08_用两个栈实现队列

2020-05-18  本文已影响0人  是新来的啊强呀

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

思路:
入队:将元素进栈A
出队:判断栈B是否为空,如果为空,则将栈A中所有元素pop,并push进栈B,栈B出栈;

如果不为空,栈B直接出栈。

    Stack<Integer> stack1 = new Stack<Integer>();
    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为空时
        if(stack2.size()<=0){
            // 栈一有数
            while(stack1.size()!=0){
                stack2.push(stack1.pop());
            }
        }
        return stack2.pop();
    }
上一篇 下一篇

猜你喜欢

热点阅读