六 用棧實現隊列

class MyQueue {
        private Stack<Integer> stack;
        private int size;

        /**
         * Initialize your data structure here.
         */
        public MyQueue() {
            stack = new Stack<Integer>();
        }

        /**
         * Push element x to the back of queue.
         */
        public void push(int x) {
            stack.push(x);
            size++;
        }

        /**
         * Removes the element from in front of queue and returns that element.
         */
        public int pop() {
            Stack<Integer> returnStack = new Stack<Integer>();
            for (int i = 0; i < size; i++) {
                returnStack.push(stack.pop());
            }
            int returnVlaue = returnStack.pop();
            size--;
            for (int i = 0; i < size; i++) {
                stack.push(returnStack.pop());
            }
            return returnVlaue;
        }

        /**
         * Get the front element.
         */
        public int peek() {
            Stack<Integer> returnStack = new Stack<Integer>();
            for (int i = 0; i < size; i++) {
                returnStack.push(stack.pop());
            }
            int returnVlaue = returnStack.peek();
            for (int i = 0; i < size; i++) {
                stack.push(returnStack.pop());
            }
            return returnVlaue;
        }

        /**
         * Returns whether the queue is empty.
         */
        public boolean empty() {
            return stack.empty();
        }
    }

思想也簡單就是兩個隊列遍歷來顛倒順序。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章