用两个栈实现队列

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));
        }
    }
}
相关推荐
alexhilton5 小时前
使用Android Archive进行打包
android·kotlin·android jetpack
badhope7 小时前
做了几年安卓开发,这些坑我帮你踩过了
android·android studio
nanxun8861 天前
记一次诡异的 Docker 容器"串包"故障排查
java
用户1563068103511 天前
Day01 | Java 基础(Java SE)
java
行者全栈架构师1 天前
Maven dependency:tree 的 8 个高级用法
java·后端
行者全栈架构师1 天前
IDEA 中 Maven 项目的 15 个红色报错快速解决方法
java·后端
令人头秃的代码0_01 天前
mac(m5)平台编译openjdk
java
唐青枫2 天前
Java JDBC 实战指南:从 Connection 到事务和连接池
java
一个做软件开发的牛马2 天前
MyBatis-Plus 从零实战:完整搭建可运行 Demo,BaseMapper 零 SQL、Wrapper 条件构造、分页插件与代码生成器详解
java·后端
用户3721574261352 天前
Java 处理 PDF 图片:提取 PDF 中的图片,并压缩 PDF 图片体积
java