用两个栈实现队列

1.用两个栈实现队列

java 复制代码
import java.util.*;

public class Solution {
    // 入队栈:负责接收新元素
    private Stack<Integer> stackIn = new Stack<>();
    // 出队栈:负责弹出元素
    private Stack<Integer> stackOut = new Stack<>();

    // 入队操作:直接压入入队栈
    public void push(int node) {
        stackIn.push(node);
    }

    // 出队操作:保证先进先出
    public int pop() {
        // 出队栈为空时,将入队栈所有元素转移到出队栈
        if (stackOut.isEmpty()) {
            while (!stackIn.isEmpty()) {
                stackOut.push(stackIn.pop());
            }
        }
        // 弹出出队栈栈顶(队列队头)
        return stackOut.pop();
    }

    public static void main(String[] args) {
        Solution queue = new Solution();
        Scanner sc = new Scanner(System.in);
        // 读取操作序列
        String[] ops = sc.nextLine().split(",");
        List<Integer> res = new ArrayList<>();

        for (String op : ops) {
            if (op.startsWith("PSH")) {
                // 入队操作:提取数字
                int num = Integer.parseInt(op.substring(3));
                queue.push(num);
            } else if (op.equals("POP")) {
                // 出队操作:记录结果
                res.add(queue.pop());
            }
        }

        // 输出结果,用逗号分隔
        for (int i = 0; i < res.size(); i++) {
            if (i > 0) System.out.print(",");
            System.out.print(res.get(i));
        }
    }
}
相关推荐
维吉斯蔡2 小时前
【VS Code / Cursor】文件夹右键快捷打开与文件类型自动关联
开发语言·程序人生·学习方法
蓝斯4972 小时前
[原创]《C#高级GDI+实战:从零开发一个流程图》第章:增加贝塞尔曲线,上、下、左、右连接点
java·c#·流程图
前端工作日常2 小时前
我学习到的Java 的 Service 分层:itf 和 impl 到底是什么?
java·后端
漏刻有时2 小时前
PHP GeoJSON转PNG地图渲染程序开发笔记、源码解读、问题复盘与整改方案
android·笔记·php
都叫我大帅哥3 小时前
Spring @Transactional 注解完全指南
java·spring
Java成神之路-3 小时前
G1 垃圾回收器 :SATB + TAMS核心机制深度解析
java·jvm
前端工作日常3 小时前
我学习到的JIT即时编译与机器码缓存失效
java·后端
-SOLO-4 小时前
解决VMware 显示比例被重置的问题
android
带刺的坐椅4 小时前
Solon 的 10 种 HTTP 服务器:改一行依赖,换一个引擎
java·solon·jetty·undertow·mcp-server·htttp
luj_17684 小时前
星火科技助力边远地区防病攻坚
c语言·开发语言·c++·经验分享·算法