关闭

Implement Stack using Queues

标签: StackData Structure
217人阅读 评论(0) 收藏 举报
分类:
class MyStack {
    // Two queues.
    Queue<Integer> queue1 = new LinkedList<Integer>();
    Queue<Integer> queue2 = new LinkedList<Integer>();
    
    // Push element x onto stack.
    public void push(int x) {
        if (empty()) {
            queue1.offer(x);
        } else {
            if (queue1.size() > 0) {
                queue2.offer(x);
                int size = queue1.size();
                while (size > 0) {
                    queue2.offer(queue1.poll());
                    size--;
                }
            } else {
                queue1.offer(x);
                int size = queue2.size();
                while (size > 0) {
                    queue1.offer(queue2.poll());
                    size--;
                }
            }
        }
    }

    // Removes the element on top of the stack.
    public void pop() {
        if (empty()) {
            return;
        } else if (queue1.size() > 0) {
            queue1.poll();
        } else {
            queue2.poll();
        }
    }

    // Get the top element.
    public int top() {
        if (empty()) {
            return Integer.MAX_VALUE;
        } else if (queue1.size() > 0) {
            return queue1.peek();
        } else {
            return queue2.peek();
        }
    }

    // Return whether the stack is empty.
    public boolean empty() {
        return queue1.isEmpty() && queue2.isEmpty();
    }
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:26539次
    • 积分:2351
    • 等级:
    • 排名:第15957名
    • 原创:214篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条