使用栈实现队列

思路: 思路比较简单,使用两个栈,一个栈A负责入队,一个栈B负责出队,出队的时候,先判断栈B的元素是否为空,如果为空则将栈A的元素全部出栈放入栈B中,然后栈B元素出栈

代码:

package com.buka.designer.statkqueue;

import java.util.Stack;

/**

*  用栈实现队列

*/

public class StackQueue {

    private Stack stackA = new Stack<>();

    private Stack stackB = new Stack<>();

    /**

    * 入队操作

    */

    public void enQueue(int item) {

        stackA.push(item);

    }

    /**

    * 出队操作

    *

    */

    public Integer deQueue() {

        if (stackB.isEmpty()) {

            if (stackA.isEmpty()) {

                return null;

            }

            transfer();

        }

        return stackB.pop();

    }

    /**

    * 转换

    */

    public void transfer () {

        while (!stackA.isEmpty()) {

            stackB.push(stackA.pop());

        }

    }

    public static void main(String[] args) {

        StackQueue stackQueue = new StackQueue();

        stackQueue.enQueue(1);

        stackQueue.enQueue(2);

        stackQueue.enQueue(3);

        stackQueue.enQueue(4);

        System.out.println(stackQueue.deQueue());

        System.out.println(stackQueue.deQueue());

        stackQueue.enQueue(5);

        System.out.println(stackQueue.deQueue());

        System.out.println(stackQueue.deQueue());

        System.out.println(stackQueue.deQueue());

        System.out.println(stackQueue.deQueue());

    }

}

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