用队列实现栈

题目地址:https://leetcode-cn.com/problems/implement-stack-using-queues/


题目:


使用队列实现栈的下列操作:


push(x) -- 元素 x 入栈

pop() -- 移除栈顶元素

top() -- 获取栈顶元素

empty() -- 返回栈是否为空

试题分析:


这道题和232这道题一样,只是数据结构反过来实现,利用队列来实现栈,实现原理也是雷同,都是通过两个队列来实现堆栈的FILO的功能,在操作上也是一个进队列一个出队列,每次在push和pop的时候都要进行循环的在两个队列中导出导入,232和225在面试过程中是非常常见的一道算法题,能够考验你对队列和栈的特性理解和灵活使用。


public class ImplementStackUsingQueues_225 {

    private Queue queueIn;

    private Queue queueOut;


    /** Initialize your data structure here. */

    public ImplementStackUsingQueues_225() {

        queueIn = new LinkedBlockingQueue();

        queueOut = new LinkedBlockingQueue();

    }


    /** Push element x onto stack. */

    public void push(int x) {

        while(!queueOut.isEmpty()){

            queueIn.add(queueOut.poll());

        }

        queueIn.add(x);

    }


    /** Removes the element on top of the stack and returns that element. */

    public int pop() {

        while(!queueOut.isEmpty()){

            queueIn.a

转自作者monkey01

联系作者longtestyan

图片发自App

你可能感兴趣的:(用队列实现栈)