欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用栈实现队列

程序员文章站 2022-04-27 15:09:47
...

 

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

 

 

代码:

package com.buka.designer.statkqueue;

import java.util.Stack;

/**
 *  用栈实现队列
 */
public class StackQueue {

    private Stack<Integer> stackA = new Stack<>();

    private Stack<Integer> 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());

    }


}

 

相关标签: 队列 算法