首页 > 其他分享 >225. 用队列实现栈

225. 用队列实现栈

时间:2024-10-23 22:59:48浏览次数:7  
标签:q1 q2 队列 ret 实现 int pop front 225

class MyStack {
public:
    MyStack() 
        : q1(queue<int>()), q2(queue<int>())
    {
    }
    
    void push(int x) {
        q1.push(x);
    }
    
    int pop() {
        int ret;
        if(q1.size() == 1){
            ret = q1.front();
            q1.pop();
        }else{
            int n = q1.size() - 1;
            while(n > 0){           //将多余元素移到q2
                q2.push(q1.front());
                q1.pop();   
                --n;
            }
            ret = q1.front();
            q1.pop();
            while(!q2.empty()){     //移回q1
                q1.push(q2.front());
                q2.pop();
            }
        }
        return ret;
    }
    
    int top() {
        int ret;
        if(q1.size() == 1){
            ret = q1.front();
        }else{
            int n = q1.size() - 1;
            while(n > 0){
                q2.push(q1.front());
                q1.pop();
                --n;
            }
            ret = q1.front();
            q1.pop();
            q2.push(ret);
            q1 = q2;
            while(!q2.empty()){
                q2.pop();
            }
        }
        return ret;
    }
    
    bool empty() {
        return q1.empty();
    }
    
private:
    queue<int> q1;
    queue<int> q2;
};

 

最近学习很不顺心,感觉自己很没用,学习前端感觉也好难好难,有种学不会的感觉,但我知道还很早,路还有很远,相信自己一定可以做到的。

 

标签:q1,q2,队列,ret,实现,int,pop,front,225
From: https://www.cnblogs.com/llllmz/p/18498545

相关文章

  • RabbitMQ是一个开源的消息代理和队列服务器
    RabbitMQ是一个开源的消息代理和队列服务器,它基于AMQP(AdvancedMessageQueuingProtocol,高级消息队列协议)协议实现,同时也支持其他消息协议如STOMP、MQTT等。作为一个可靠的消息传递服务,RabbitMQ在分布式系统中广泛应用于异步处理、应用解耦、流量控制等场景。以下是对Rabb......
  • C++ set和map的模拟实现
    我们之前在红黑树里讲过,STL容器中的set与map底层就是一棵红黑树,要模拟实现set与map底层需要实现红黑树,并将其做一些改造1.set类与map类的框架1.1setnamespacepc{ template<classK> classset { public://成员函数 private: RBTree<K,K,SetC......
  • 如何在verilog设计的磁盘阵列控制器中实现不同RAID级别(如RAID 0、RAID 1等)的切换?
    以下是一种在Verilog设计的磁盘阵列控制器中实现不同RAID级别(以RAID0和RAID1为例)切换的方法:添加控制信号在磁盘阵列控制器模块中添加一个输入信号,例如raid_mode,用于选择RAID模式。假设raid_mode=0表示RAID0模式,raid_mode=1表示RAID1模式。moduleraid_contr......
  • 毕业设计-基于SpringBoot与Vue实现的智能停车场系统
    项目简介基于SpringBoot+Vue的智能停车场项目系统内置多项核心功能,包括系统管理、账号管理、系统监控、财务管理、停车记录、车辆管理、车牌识别和停车场管理。系统管理涵盖角色、接口、菜单和全局配置,账号管理包括用户和合作单位管理。系统监控提供监控大屏和日志监控功......
  • 毕业设计-基于springboot+vue实现的在线文档管理系统源码+论文
    项目简介这个在线文档管理系统基于MySQL数据库,并采用了SpringBoot框架进行开发。在设计过程中,我们特别注重了系统代码的可读性、实用性、易扩展性、通用性、维护便捷性以及页面简洁性等特点。当前,许多人仍然依赖传统的纸质工具来进行信息管理,而网络技术仅仅被视为辅助手段。......
  • 数据结构C语言版_队列笔记||已测试所有代码均可运行
    队列源文件使用markdown编写,CSDN文章发布好像有部分语法改变。每一部分我都有加一个返回标题好像不能使用了。但是CSDN自带一个目录总结,你们无视掉我写的目录直接用CSDN的吧。总结笔记不易,如果有帮助到你希望点个赞。所有代码均已在VScode中运行过,部分代码块因为格式原因......
  • 青龙面板账密登录搭建并对接无界实现自动更新ck,没有rabbitpro token者的福音来了,可替
    现在我们就开始拉取账密登录。首先还是在已经配置好docker的服务器中进行本地有amd机子的话最好搭在本地,基本不需要验证码如果没有那么就搭在amd的云服务器上面基本就前两次登录需要验证码,后续则不需要,那么下面开始我们正文首先在finshell里面输入以下代码(arm机子就不......
  • 基于三帧差算法的运动目标检测系统FPGA实现,包含testbench和MATLAB辅助验证程序
    1.算法运行效果图预览(完整程序运行后无水印)   将FPGA的仿真结果导入到MATLAB中,分别得到MATLAB的结果和FPGA的结果:   2.算法运行软件版本vivado2019.2 matlab2022a 3.部分程序(完整版代码包含详细中文注释和操作步骤视频)`timescale1ns/1ps////C......
  • 基于人脸识别的Matlab代码实现
    人脸识别的Matlab代码实现 1概述人脸检测(FaceDetection)是在输入图像中确定所有人脸(如果存在)的位置,大小,位姿的过程。人脸检测作为人脸信息处理中的一项关键技术,近年来成为模式识别与计算机视觉领域一项受到普遍重视,研究十分活跃的课题﹐人脸检测问题最初来源于人脸......
  • Unity3D教程:次表面散射的简单实现
    次表面散射指的是光线射入半透明材质,在内部发生散射后再透射出来的光线传播过程,考虑到有些项目会需要使用次表面散射,下面就给大家介绍下在Unity3D中次表面散射的简单实现,希望可以帮到大家。 一、前言本文旨在与大家一起探讨学习新知识,如有疏漏或者谬误,请大家不吝指出。以下内......