美文网首页
《剑指offer第二版》面试题9:用两个栈实现队列(java)

《剑指offer第二版》面试题9:用两个栈实现队列(java)

作者: castlet | 来源:发表于2020-03-07 11:48 被阅读0次

    题目描述

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

    解题思路:

    1. 定义两个栈in和out。
    2. appendTail操作:将数据压入栈in。
    3. deleteHead操作:如果out栈为空,则将in里的所有数据出栈,再将数据压入栈out里。此时out的栈顶元素即为队里的头元素。

    代码

    static class CQueue<T> {
        Stack<T> in = new Stack<>();
        Stack<T> out = new Stack<>();
    
        void appendTail(T data){
            in.push(data);
        }
    
        T deleteHead() {
            if (out.isEmpty()) {
                while (!in.isEmpty()) {
                    out.push(in.pop());
                }
            }
            if (out.isEmpty()) {
                throw new RuntimeException("queue is empty!");
            }
            return out.pop();
        }
    }
    

    相关文章

      网友评论

          本文标题:《剑指offer第二版》面试题9:用两个栈实现队列(java)

          本文链接:https://www.haomeiwen.com/subject/grmqdhtx.html