【算法】使用两个栈模拟一个队列

思想

栈的特性在于先进后出,队列的特性是先进先出。
一个栈A用于接收数据,另外一个栈B用来输出数据,栈A中的数据要想输出,要全部先放B中输出,这样出来的就是先进的。

代码实现

import java.util.Stack;

/**
 * @author 阳光大男孩!!!
 */
public class MyQueue {
    /**用于接收的栈*/
    private Stack<Integer> stackA ;
    /**用于输出的栈*/
    private Stack<Integer> stackB ;
    public MyQueue()
    {
        stackA = new Stack<>();
        stackB = new Stack<>();
    }

    public void join(int value)
    {
        stackA.push(value);
    }
    public int pop()
    {
        if(this.empty())
        {
            System.out.println("队列为空!");
        }
        if(stackB.empty())
        {
            while(!stackA.empty())
            {
                stackB.push(stackA.pop());
            }

        }
        return stackB.pop();

    }
    public boolean empty()
    {
        if(stackA.empty()&&stackB.empty())
        {
            return true;
        }
        return false;
    }

    public static void main(String[] args) {
        MyQueue myQueue = new MyQueue();
        myQueue.join(1);
        myQueue.join(2);
        myQueue.join(3);
        System.out.println(myQueue.pop());
        System.out.println(myQueue.pop());
        myQueue.join(4);
        System.out.println(myQueue.pop());
        System.out.println(myQueue.pop());

    }
}

发布了245 篇原创文章 · 获赞 108 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_43889841/article/details/104336608