美文网首页
《剑指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