其他分享
首页 > 其他分享> > 【剑指offer】两个栈实现一个队列

【剑指offer】两个栈实现一个队列

作者:互联网

题目:用两个栈实现一个队列

import java.util.Stack;

/**
 * 用两个栈实现一个队列
 */
public class StackToQueue {
    
    public static void main(String[] args) {

        //进队
        for (int i = 0; i < 5; i++) {
            enqueue(i);
        }

        //出队
        int size = size();
        for (int i = 0; i < size; i++) {
            System.out.println(dequeue());
        }

    }
    
    //栈1负责出队操作
    static Stack<Integer> stack1 = new Stack<>();
    //栈2负责进队操作
    static Stack<Integer> stack2 = new Stack<>();

    /**
     * 进队操作
     */
    public static void enqueue(int node) {
        stack2.push(node);
    }

    /**
     * 出队操作
     */
    public static int dequeue() {
        //栈1为空时 将栈2的数据出栈 并对栈1进行进栈
        if (stack1.size() <= 0) {
            while (stack2.size() != 0) {
                stack1.push(stack2.pop());
            }
        }
        return stack1.pop();
    }

    /**
     * 队列中元素个数
     */
    public static int size() {
        return stack1.size() + stack2.size();
    }
}

执行结果:

0
1
2
3
4

标签:offer,队列,进队,public,实现,int,static,Stack,size
来源: https://blog.csdn.net/u013700502/article/details/116375733