关于用栈实现队列

来源:3-2 作业解析:用队列实现栈

hxcchan

2020-10-12 23:56:59

老师,为什么在给出的解答当中还用到了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回答

liuyubobobo

2020-10-13

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


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


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


继续加油!:)

0

算法与数据结构

波波老师5年集大成之作,算法与数据结构系统学习,考试、面试、竞赛通用

2603 学习 · 1086 问题

查看课程