数据结构模拟-用栈实现队列

news/2025/4/2 6:26:23/

用栈实现队列的基本操作,包括pop(), push(), empty(), peek().

可以用两个栈来实现,一个栈保存入队的一端,也就是队尾,一个栈保存出队的一端,也就是队首。当遇到出队pop()时,如果stack out不为空,直接出栈,如果为空,那么先将stack in栈中所有的元素移动到stack out中,由于两个栈先进后出的特性,相当于负负得正,正好将stack in栈中想反的先后顺序更正了过来。

232. 用栈实现队列 - 力扣(LeetCode)

参考代码如下:

class MyQueue {
private:stack<int> inSt;//队尾,入队stack<int> outSt;//队首,出队public:MyQueue() {}void push(int x) { inSt.push(x); }//入队,加入stack in栈中int pop() {//出队,按照上述的逻辑过程if(outSt.empty()){while (!inSt.empty()) {outSt.push(inSt.top());inSt.pop();}}int res = outSt.top();outSt.pop();return res;}int peek() {//返回队首元素,复用pop()int res = this->pop();outSt.push(res);return res;}bool empty() {//两个栈都为空,说明队列为空return inSt.empty() && outSt.empty();}
};/*** Your MyQueue object will be instantiated and called as such:* MyQueue* obj = new MyQueue();* obj->push(x);* int param_2 = obj->pop();* int param_3 = obj->peek();* bool param_4 = obj->empty();*/


http://www.ppmy.cn/news/1583803.html

相关文章

Linux《基础开发工具(下)》

在之前的Linux《基础开发工具》上和中当中我们已经了解了一些的Linux当中的基础开发工具&#xff0c;接下来在本篇当中我们将继续来了解两个基本的开发工具git和gbd&#xff0c;信息通过本篇的学习让你了解和这两个工具的基本使用方法&#xff0c;接下来就开始本篇的学习吧&…

设计模式之创建型5种

设计模式 为什么设计模式是23种创建型 对象创建为什么设计模式是23种 设计模式之所以被归纳为23种,而非其他数量,源于GoF(Gang of Four)在1994年的系统性总结和分类。这一数量的确定并非偶然,而是基于以下核心原因: 他们遵循“大三律”(Rule of Three),即只有经过三个…

VMware安装Ubuntu实战分享:从下载到桌面的完整指南

一、准备工作&#xff1a;兵马未动&#xff0c;粮草先行 1. 所需装备清单 VMware Workstation&#xff1a;推荐16 Pro版&#xff08;打工人用Player免费版也行&#xff09;Ubuntu镜像&#xff1a;官网下载LTS版&#xff08;长期支持版&#xff0c;稳如老狗&#xff09;电脑配…

双周报Vol.68: Bytes模式匹配增强、函数别名上线、IDE体验优化...核心技术迎来多项更新升级!

2025-03-24 语言更新 Bytes 现在可以使用 array pattern 进行模式匹配 fn main {let bytes : Bytes "Hello, world!";match bytes {[..b"Hello", ..] > {println("Starts with \"Hello\"");}_ > {println("Doesnt star…

Serverless架构的应用场景

以下是Java中Serverless架构的应用场景、搭建步骤以及案例: Java在Serverless架构中的应用 1. 事件驱动的数据处理 Java代码可以作为函数运行,响应各种事件源,如HTTP请求、消息队列、数据库更改等。例如,AWS Lambda支持Java,用户可以将Java代码部署为函数,处理这些事件…

GR00T N1:通才人形机器人的开放基础模型(上)

25年3月来自Nvidia的论文“GR00T N1: An Open Foundation Model for Generalist Humanoid Robots”。 通用机器人需要多功能的身体和聪明的头脑。人形机器人的最新进展显示出作为在人类世界中构建通才自主性硬件平台的巨大潜力。在大量多样化数据源上训练的机器人基础模型&…

Python 实现机器学习小项目实战教程*

markdown 复制 Python 实现机器学习小项目实战教程 本教程将通过一个完整的机器学习项目案例&#xff0c;从数据预处理到模型部署&#xff0c;帮助初学者快速掌握机器学习核心流程。项目以经典的鸢尾花分类为例&#xff0c;使用 Scikit-learn 库实现。 1. 项目概述 目标 构…

【JavaScript】闭包笔记

闭包是什么&#xff1f; 定义 闭包&#xff08;Closure&#xff09;是指函数可以访问其外部函数作用域中的变量。当一个函数在其外部函数的作用域内被调用时&#xff0c;它会“记住”外部作用域的变量&#xff0c;并且可以在函数外部依然访问到这些变量。 为什么叫闭包&…