关于用栈实现队列

关于用栈实现队列

老师,为什么在给出的解答当中还用到了Stack这个接口呢?可不可以用Deque这个接口?但如果用了Deque这个接口,本身就是一个双端队列,又怎么用来当做栈用呢?一下是我的实现方法,虽然也在leetcode跑过了,但感觉还是有问题。上次面试问到这个也是这么写的……

class MyQueue {
    Deque<Integer> stack;

    /** Initialize your data structure here. */
    public MyQueue() {
        stack = new ArrayDeque<>();
    }
    
    /** Push element x to the back of queue. */
    public void push(int x) {
        stack.offerLast(x);
    }
    
    /** Removes the element from in front of queue and returns that element. */
    public int pop() {
        return stack.pollFirst();
    }
    
    /** Get the front element. */
    public int peek() {
        return stack.peekFirst();
    }
    
    /** Returns whether the queue is empty. */
    public boolean empty() {
        return stack.isEmpty();
    }
}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
liuyubobobo 2020-10-13 15:12:00

这个问题是使用栈实现队列,所以使用 Stack 接口没有毛病啊。


如果你是指 Java 语言的 Stack 接口设计有问题,这个课程的这一小节专门介绍了这个问题:https://class.imooc.com/lesson/1579#mid=36155


Deque 是双端队列,只是用其中的一段入队和出队,就是栈。


继续加油!:)

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
算法与数据结构
  • 参与学习       2589    人
  • 解答问题       1090    个

慕课网算法名师Liuyubobobo,5年集大成之作 从0到工作5年,算法与数据结构系统解决方案

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师