1. 程式人生 > >使用一個隊列完成一個棧

使用一個隊列完成一個棧

一個隊列 bool clas tac rem peek ron 使用 com

2018-01-25 21:11:02

題目描述:

技術分享圖片

問題求解:

隊列的特點是先進先出,棧的特點是先進後出。如果在push的時候,對隊列中的元素進行reverse,那麽就可以很容易的進行pop(),top(),empty()等操作。

class MyStack {
    Queue<Integer> queue;

    /** Initialize your data structure here. */
    public MyStack() {
        queue = new LinkedList<>();
    }
    
    /** Push element x onto stack. */
    public void push(int x) {
        int size = queue.size();
        queue.offer(x);
        while (size-- > 0) {
            queue.offer(queue.poll());
        }
        
    }
    
    /** Removes the element on top of the stack and returns that element. */
    public int pop() {
        return queue.poll();
    }
    
    /** Get the top element. */
    public int top() {
        return queue.peek();
    }
    
    /** Returns whether the stack is empty. */
    public boolean empty() {
        return queue.isEmpty();
    }
}

使用一個隊列完成一個棧