用两个栈实现队列

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));
        }
    }
}
相关推荐
下载居4 分钟前
Node.js(Javascript运行环境) 26.1
开发语言·javascript·node.js
范什么特西8 分钟前
第一个Mybatis
java·开发语言·mybatis
下次再写9 分钟前
【Redis实战】深入理解Redis缓存策略:从原理到Spring Boot实践
java·spring boot·redis·缓存穿透·缓存击穿·分布式缓存·缓存策略
超梦dasgg12 分钟前
智慧充电系统计费定价服务Java 实现
java·开发语言·spring·微服务
敲敲千反田14 分钟前
ThreadLocal和CompletableFuture
java·网络·jvm
码云数智-园园22 分钟前
Spring循环依赖:三级缓存到底解决了什么,没解决什么?
java·后端·spring
vx-程序开发24 分钟前
PHP书店网站-计算机毕业设计源码05274
开发语言·php·课程设计
峥嵘life28 分钟前
五一南昌第三天游玩记录:梅景寻芳,母校忆旧,摩天轮揽夜
android
陈eaten31 分钟前
windows上协调多版本python以及虚拟环境
开发语言·windows·python·pycharm·pip·虚拟环境·py
龙亘川32 分钟前
城市更新×智慧治理:老旧小区改造中的数字化创新实践
java·大数据·人工智能·机器学习·智慧城市