【LeetCode225】队列实现栈

博客围绕队列实现栈展开,介绍了题目要求、提交结果,对问题进行分析,通过举例说明队列数据操作过程,如将队列A数据弹出留一个,其余入队列B,实现pop操作。实际写代码时可交换两队列引用,还给出了代码实现,包含各方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

队列实现栈
题目要求:

在这里插入图片描述

提交结果:

在这里插入图片描述

问题分析

举例说明; 1 2 3 4 5 入队列A

将A队列的内容弹出,给A队列中仅留一个数据,将弹出的数据 入队列B。
即A中剩5,B中为1,2,3,4。

将5 出队,就是第一次pop的结果。

然后再将B队列中的 1 2 3 入队列A 从B队列中弹出4,第二次pop的结果

就这样来回倒即可。

其实实际写代码的时候,不必来回倒,只需要将两个队列的引用交换一下即可。

代码实现
  • 两个队列
     Queue<Integer> dataQueue;
     Queue<Integer> helpQueue;
    /** Initialize your data structure here. */
     public MyStack() {
        dataQueue = new LinkedList<>();
        helpQueue = new LinkedList<>();
    }
  • push方法
 public void push(int x) {
        dataQueue.offer(x);
    }
  • top方法
 public int top() {
        while(dataQueue.size() > 1){
            helpQueue.offer(dataQueue.poll());
        }
        int res = dataQueue.poll();
        helpQueue.offer(res);
        swap();
        return res;
     }
  • pop方法
public int pop(){
    while(dataQueue.size() > 1){
        helpQueue.offer(dataQueue.poll());
    }
    int res = dataQueue.poll()swap();
    return res;
}
  • isEmpty方法
 public boolean empty() {
        return dataQueue.isEmpty() && helpQueue.isEmpty();
    }
  • swap方法交换引用
private void swap(){
    // 交换一下引用
    Queue<Integer> temp = dataQueue;
    dataQueue = helpQueue;
    helpQueue = temp;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值