Java 用两个队列实现栈详解

用两个队列实现栈

题目描述

用两个队列来实现一个栈,完成栈的 PushPop 操作。 栈中的元素为 int 类型。

解法

Push 操作,每次都存入 queue1Pop 操作,每次从 queue1 取:

import java.util.LinkedList;
import java.util.Queue;

/**
 * @author bingo
 * @since 2018/10/29
 */

public class Solution {

    private Queue<Integer> queue1 = new LinkedList<>();
    private Queue<Integer> queue2 = new LinkedList<>();

    public void push(int node) {
        queue1.offer(node);
    }

    public int pop() {
        if (queue1.isEmpty()) {
            throw new RuntimeException("Empty stack!");
        }

        while (queue1.size() > 1) {
            queue2.offer(queue1.poll());
        }

        int val = queue1.poll();

        Queue<Integer> t = queue1;
        queue1 = queue2;
        queue2 = t;
        return val;

    }
}

测试用例

  1. 往空的栈里添加、删除元素;
  2. 往非空的栈添加、删除元素;
  3. 连续删除元素直至栈为空。

教程来源于Github,感谢apachecn大佬的无私奉献,致敬!

技术教程推荐

左耳听风 -〔陈皓〕

技术领导力实战笔记 -〔TGO鲲鹏会〕

Swift核心技术与实战 -〔张杰〕

乔新亮的CTO成长复盘 -〔乔新亮〕

说透数字化转型 -〔付晓岩〕

Spring Cloud 微服务项目实战 -〔姚秋辰(姚半仙)〕

深入浅出可观测性 -〔翁一磊〕

结构学习力 -〔李忠秋〕

AI大模型系统实战 -〔Tyler〕