用两个栈实现队列

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));
        }
    }
}
相关推荐
java_nnnn1 分钟前
Spring Boot 快速上手:从 Maven 到第一个 Controller
java·spring·java-ee·maven
ysu_03143 分钟前
uv实战指南-从Python版本虚拟环境到pyproject依赖管理
开发语言·python·pip·uv·虚拟环境·包管理·依赖管理
夕除6 分钟前
redis--集群
java·redis
蜗牛互联网7 分钟前
OLMo-core 3的token gerrymandering提醒:MoE路由要按时间窗验收
java·人工智能·wpf
奇牙coding11 分钟前
Codex C接 配置教程:的 字段从迁移时必须写完整后缀,填旧值或省略 会静默回退默认模型
java·c语言·数据库·ai
打工仔折腾 AI14 分钟前
DiPlay 实测:iPhone 绕过硬件盒子直连 BYD 车机的思路拆解
android·人工智能·后端·python·gradle·iphone·ai agent 实战
卓怡学长20 分钟前
w193基于springboot“乐通黄骅”电动车智能充电服务小程序
java·spring boot·spring·小程序·intellij-idea
東隅已逝,桑榆非晚31 分钟前
c++模板进阶
开发语言·c++·笔记·学习
hengdonghui32 分钟前
Writeup 4 NUAA 2017 robots
android·ctf·re
谢亮_vipxieliang41 分钟前
GC 入门:G1 与 ZGC 怎么选
java·jvm·算法