前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据结构/队列实现栈

数据结构/队列实现栈

作者头像
用户10788736
发布2023-10-16 08:32:45
1290
发布2023-10-16 08:32:45
举报
文章被收录于专栏:CSDN搬移文章

前言

在学习数据结构的过程当中,我们会学到栈和队列,在本篇文章中,重点讲解的是队列实现栈,在上篇文章中已经简单介绍过栈和队列的使用说明,以及栈实现队列。(2条消息) 数据结构/栈实现队列_Y君的进化史的博客-CSDN博

队列实现栈

关于一个队列的简单使用方式:

 关于一个栈的简单使用方式:

 很显然一个队列无法实现栈,我们使用两个队列:

此时思路依旧很难被想到,我们跌倒一个队列试试:

 我们可以发现,使用一个队列入栈,另一个出栈可以实现我们的想法。

例如:

当第一个队列全部往第二个队列中输入时,最后一个元素即为出栈的第一个元素;当需要第二个出栈的元素时,再将不为空的队列往另一个空队列输入元素,末尾元素即为出栈元素;几次往返即可实现栈。

代码:

代码语言:javascript
复制
import java.util.LinkedList;
import java.util.Queue;


class MyStack {

    Queue<Integer> stack1;
    Queue<Integer> stack2;

    public MyStack() {
        stack1 = new LinkedList<>();
        stack2 = new LinkedList<>();

    }

    public void push(int x) {
        if(!stack1.isEmpty()){
            stack1.offer(x);
        }else{
            stack2.offer(x);
        }
    }

    public int pop() {
        int x = 0;
        if(!stack1.isEmpty()){
            x = stack1.poll();
            while(!stack1.isEmpty()){
                stack2.offer(x);
                x = stack1.poll();
            }
        }else if(!stack2.isEmpty()){
            x = stack2.poll();
            while(!stack2.isEmpty()){
                stack1.offer(x);
                x = stack2.poll();
            }
        }
        return x;
    }

    public int top() {
        int x = 0;
        if(!stack1.isEmpty()){
            x = stack1.poll();
            while(!stack1.isEmpty()){
                stack2.offer(x);
                x = stack1.poll();
            }
            stack2.offer(x);
        }else if(!stack2.isEmpty()){
            x = stack2.poll();
            while(!stack2.isEmpty()){
                stack1.offer(x);
                x = stack2.poll();
            }
            stack1.offer(x);
        }
        return x;
    }

    public boolean empty() {
        return stack1.isEmpty() && stack2.isEmpty();
    }
}

结语

关于队列实现栈,以上就是今天的内容,本文仅仅简单介绍了一下。

如果有小伙伴要写题测试自己的代码是否正确,可以点击下方力扣链接:

225. 用队列实现栈 - 力扣(Leetcode)

这篇博客如果对你有帮助,给博主一个免费的点赞以示鼓励,欢迎各位🔎点赞👍评论收藏⭐,谢谢!!!

如果有什么疑问或不同的见解,欢迎评论区留言哦。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 队列实现栈
  • 结语
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档