五、 栈和队列

news2024/11/28 22:52:54

一、栈和队列的定义

栈是先进后出,队列是先进先出

栈的相关操作:

stack<Type> stack_name;
.push(element) 压入栈顶
.pop() 弹出栈顶
.top() 返回栈顶元素的引用
.empty() 栈为空返回true,否则返回false

队列的相关操作:

queue<T> queue_name;
.push(element) 插入队列末尾
.pop() 移除队列的第一个元素
.front() 返回队列的第一个元素的引用
.empty() 如果队列为空,则返回true,否则返回false

二、题目1 用两个栈实现队列

用两个栈实现一个队列

class MyQueue {
private:
    stack<int> inStack, outStack;
    void in2out() {
        while ( !inStack.empty()){
            outStack.push(inStack.top());
            inStack.pop();
        }
    }
public:
    MyQueue() { }
    void push(int x) {
        inStack.push(x);
    }
    int pop() {
        if (outStack.empty()) {
            in2out();
        }
        int x = outStack.top();
        outStack.pop();
        return x;
    }
    int peek() {
        if (outStack.empty()) {
            in2out();
        }
        int x = outStack.top();
        return x;
    }
    bool empty() {
        return outStack.empty()&&inStack.empty();
    }
};

三、题目2 用两个队列实现栈

class MyStack {
private:
    queue<int> queue1;
    queue<int> queue2;
public:
    MyStack() {}
    void push(int x) {
        queue1.push(x);
        while (!queue1.empty()){
            queue2.push(queue1.front());//获取队列的第一个元素
            queue1.pop();
        }
        swap(queue1, queue2);
    }
    int pop() {
        int r = queue1.front();
        queue1.pop();
        return r;
    }
    int top() {
        int r = queue1.front();
        return r;
    }
    bool empty() {
        return queue1.empty();
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1172321.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023辽宁省数学建模B题数据驱动的水下导航适配区分类预测完整原创论文分享(python求解)

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了辽宁省数学建模B题完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 B用Python&#xff0b;SPSSPRO求解&…

尚硅谷Docker基础篇和Dockerfile超详细整合笔记

Docker基础篇DockerFile Docker&#xff1a;您要如何确保应用能够在这些环境中运行和通过质量检测&#xff1f;并且在部署过程中不出现令人头疼的版本、配置问题&#xff0c;也无需重新编写代码和进行故障修复&#xff1f;而这个就是使用容器。Docker解决了运行环境和配置问题…

程序包com.sun.deploy.net不存在的解决方法

使用package打包程序时&#xff0c;跳出这样的一个错误&#xff1a; 对应报错信息&#xff1a; 找到该目标文件内容&#xff0c;找到com.sun.deploy.net这个包&#xff1a; 删除这一行即可&#xff01;&#xff01; 运行正确。

基于白鲸优化算法BWO的VMD-KELM光伏发电功率预测(matlab代码+可提供讲解)

目录 1 主要内容 白鲸优化算法BWO 变分模态分解VMD 核极限学习机KELM 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序采用白鲸优化算法变分模态分解核极限学习机三种方法组合对短期光伏功率进行预测&#xff0c;当然&#xff0c;该方法同样适用于风电、负荷等方面…

C语言之动态内存管理实现通讯录(完整版)

我们在之前的博客中写过静态版的通讯录&#xff0c;我们今天来写一个动态版的&#xff0c;不需要规定它到底需要多大空间&#xff0c;只要还有内存&#xff0c;我们都可以存放的下&#xff01;同时&#xff0c;函数实现原理&#xff0c;我在通讯录静态版的博客里做了详细的讲解…

虚拟机VirtualBox添加磁盘

一、创建虚拟硬盘 fdisk -l 我们新添加的磁盘/dev/sdb&#xff0c;还没有分区 sdb磁盘分区 fdisk /dev/sdb n 创建一个新分区 选择p添加主分区 我们把所有10GB空间都格式化为一个分区了 。 w 键入w&#xff0c;保存设置并退出&#x…

【Python基础】Python编程入门自学笔记,基础大全,一篇到底!

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…

freertos静态创建任务

在开始前先有个小插曲&#xff0c;我的keil的自动补全代码功能使用不了&#xff0c;经过查找是因为之前装51把有的文件覆盖了&#xff0c;照这篇博客就可以解决。 然后之前那份代码我们是动态创建任务&#xff0c;先来说一下动态创建任务和静态创建任务的区别&#xff1a; Fre…

奇元大模型通过备案 360自研两大模型均获批

11月4日&#xff0c;三六零(601360.SH&#xff0c;下称“360”)大模型“奇元大模型”通过备案落地。今年9月&#xff0c;“360智脑大模型”已获批面向公众开放。360公司也成为国内首家两个大模型均通过备案的科技企业。 从大模型定位和应用角度来看&#xff0c;奇元大模型具备…

【Qt控件之QDockWidget 】使用

概述 QDockWidget类提供了一个窗口部件&#xff0c;可以被停靠在QMainWindow中&#xff0c;或作为桌面上的顶层窗口浮动显示。 QDockWidget提供了停靠窗口的概念&#xff0c;也称为工具暂存区或实用程序窗口。停靠窗口是次要窗口&#xff0c;放置在QMainWindow中心窗口周围的停…

Python之Excel数据相关

Excel Microsoft Excel是Microsoft为使用Windows和Apple Macintosh操作系统的电脑编写的一款电子表格软件。直观的界面、出色的计算功能和图表工具&#xff0c;再加上成功的市场营销&#xff0c;使Excel成为最流行的个人计算机数据处理软件。在1993年&#xff0c;作为Microsof…

LabVIEW实现变风量VAV终端干预PID控制

LabVIEW实现变风量VAV终端干预PID控制 变风量&#xff08;VAV&#xff09;控制方法的研究一直是VAV空调研究的重点。单端PID控制在温差较大时&#xff0c;系统容易出现过冲。针对空调终端单端PID控制的不足&#xff0c;设计一种干预控制与PID控制耦合的控制方法。项目使用LabV…

专访HuggingFace CTO:开源崛起、创业故事和AI民主化丨智源独家

导读 HuggingFace CTO Julien Chaumond认为&#xff0c;在大模型时代&#xff0c;AI民主化至关重要。随着大语言模型和复杂人工智能系统的崛起&#xff0c;持续提升AI技术的可及性有助于确保这些技术的获取和控制不集中在少数强大实体手中。技术民主化促进了机会均等&#xff0…

vue根据环境变量打包项目

当你的项目分为多个地区的时候&#xff0c;而且每个地区的逻辑稍微有点差异的情况下&#xff0c;不需要每个地区都打包一次&#xff0c;只需要根据环境变量配置一个公共文件即可 1、新建多个环境变量文件 2、新建globelParams.js //globelParams.jsconst taiYuan {NODE_ENV:…

虚拟机vmware使用桥接方式联网设置

步骤&#xff1a;虚拟机设置----》网络适配器---->桥接模式 这样设置好&#xff1b;只是这样设置是无法联网的 现在进入到虚拟机内部----->电机右上角的”网络连接“&#xff08;wired connection&#xff09;&#xff08;没错就是wired connection 虽然是连接WiFi热点但…

【每日一题】移除链表元素(C语言)

移除链表元素&#xff0c;链接奉上 目录 思路&#xff1a;代码实现&#xff1a;链表题目小技巧&#xff1a; 思路&#xff1a; 在正常情况&#xff1a; 下我们移除链表元素时&#xff0c;需要该位置的前结点与后节点&#xff0c; 在特别情况时&#xff1a; 例如 我们发现&…

模版方法模式-定义算法的框架

在生活中&#xff0c;很多事需要通过几个步骤才能完成。例如找工作&#xff0c;一般都包含投递简历、面试、等待结果等几个步骤。投递简历何等待结果这两个步骤大同小异&#xff0c;最大的区别在于面试这个步骤。 在软件开发中&#xff0c;有时也会遇到类似情况。某个方法的实…

.mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复

导言&#xff1a; 随着网络犯罪日益猖狂&#xff0c;勒索病毒已经成为数字时代中的一大威胁。.mkp勒索病毒是其中一种&#xff0c;其已经衍生出了多个不同的变种&#xff0c;其中常见的有.[MyFilewaifu.club].mkp勒索病毒,[hendersoncock.li].mkp勒索病毒,[myersairmail.cc].mk…

炸了!CVPR 2024投稿ID突破18000

点击下方卡片&#xff0c;关注“CVer”公众号 AI/CV重磅干货&#xff0c;第一时间送达 点击进入—>【计算机视觉和Transformer】交流群 扫码加入CVer知识星球&#xff0c;可以最快学习到最新顶会顶刊上的论文idea和CV从入门到精通资料&#xff0c;以及最前沿项目和应用&…

【黑马程序员】Maven 进阶

文章目录 前言一、分模块开发与设计1. 分模块开发意义2. 分模块开发&#xff08;模块拆分&#xff09;2.1 创建 Maven 模块2.2 书写模块代码2.3 通过 Maven 指令安装模块到本地仓库&#xff08;install 指令&#xff09; 二、依赖管理1. 依赖传递1.1 依赖传递冲突问题 2. 可选依…