力扣经典题目之->用栈实现队列 的详细讲解与实现,看这篇就够了!

一:题目

二:思路

1:先看两个概念:

2:题目的理解

用两个栈来实现队列(表面)

用栈的函数来实队列(深层)

用先进先出的栈函数 来实现后进先出的队列函数 (本质)

3:题目的要求

实现 MyQueue 类:

  • void push(int x) 将元素 x 推到队列的末尾
  • int pop() 从队列的开头移除并返回元素
  • int peek() 返回队列开头的元素
  • boolean empty() 如果队列为空,返回 true ;否则,返回 false

 4:思路讲解(如何达到先进先出的效果,1 2 3 4的顺序)

a:两个栈,一个叫pushst(只用来入队列),一个叫popst(只用来出队列)

b:将pushst栈的全部出栈到popst栈中

解释:

这时候再 对popst栈进行出栈操作,就是1 2 3 4 的顺序了,达到了队列的先进先出的效果

c:这时候来新的元素,要进行入队列函数操作,也就是照样放在只用来入队列的pushst

解释:

popst继续进行出栈的操作就能达到队列的先进先出(1 2 3 4 ),元素出完了后,再把pushst的元素像之前一样,通过出栈,放进popst,然后再对popst进行出栈,就能继续达到队列的效果(5 6)

注意:

写代码之前,我们得先把队列的实现 放在答题代码的前面

关于队列的实现函数,博主已经在前文栈的实现(一篇包懂)-CSDN博客中讲解了,并且已经在此题中应用且通过此题啦,所以放心使用吧!

三:代码展示及其解释

一:myQueueCreate(创建队列) 和MyQueue 结构体的实现

解释:

1:

根据我们前面的思路。所以创建两个栈pushst 和 popst

二:myQueuePush函数(入队列函数)

解释:

1:

根据前文思路,我们入队列就是往pushst栈中入栈即可。

三:myQueuePeek函数(返回队列开头的元素)

解释:

1:

 返回队列开头的元素相比出队列,只是少了删除队列开头元素这一步

2:

根据前文思路,我们把popst栈中的栈顶的元素return 即可,不需要出栈此元素,不然就成了出队列的函数了。

3:popst一定得有元素,才能进行对popst栈的栈顶的元素的return,所以要先判断popst是否为空,空的话,就根据思路,把pushst栈的元素全部都先出栈,再入栈到popst栈中即可!

四:myQueuePop函数(出队列函数)

解释:

1:

直接复用myQueuePeek函数即可,就不用再进行检测popst是否为空及后面的一系列操作了,再将popst栈的栈顶元素出掉,达到出队列的效果。

2:题目中myQueuePeek函数是在myQueuePop的后面,做题的时候,将myQueuePeek手动换到前面就行。

五:myQueueEmpty函数(判断队列是否为空)

解释:

1:

两个栈都空,队列才叫空。

六:myQueueFree函数(销毁队列函数)

解释:

1:

先释放两个栈,在释放掉obj。 

 

 

 

 

 

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

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

相关文章

耐玩单机游戏推荐:文明6 电脑游戏分享

《文明VI》呈现融入世界的新方式:城市现已在版图上扩充疆域,积极研究技术和文化可解锁新潜能,而相互竞争的领导者们也将根据其历史特质追寻自己的新议程,而你也将借助五种方式之一取得游戏的胜利。 系统需求 最低配置: 需要 64 …

自动打电话工具开发需要用到的源代码!

随着移动互联网的飞速发展,自动打电话工具的开发需求日益增加,这类工具能够为用户提供便捷的通信体验,节省时间成本,提高生活效率。 然而,要实现自动打电话的功能,并非易事,本文将科普自动打电…

效率飙升!用升级版思维导图搞定测试用例

Xmind思维导图<转>测试用例_如何将xmind改成测试用例-CSDN博客https://weiyv.blog.csdn.net/article/details/135920569 上一次的【xmind思维导图转测试用例】的文章浏览量飙升,这一次把工具又进行升级啦,是在线版的免费工具哦&am…

leetcode日记(42)螺旋矩阵

我使用的是递归&#xff0c;每次递归遍历一圈矩阵&#xff0c;将遍历结果塞进结果vector中&#xff0c;每次遍历修改上下左右边界&#xff0c;直至遍历后其中两边界重合或交错。 class Solution { public:vector<int> spiralOrder(vector<vector<int>>&…

Photoneo 3D 网格划分

Photoneo 3D 网格划分是一种多功能软件解决方案&#xff0c;专为快速、精确的 3D 模型而设计 从多个 3D 扫描或来自 Photoneo 3D 传感器的连续 3D 数据流创建。它 旨在实现适用于各种应用的高级 3D 数据采集&#xff0c;例如 机器人引导、质量检查和逆向工程。 它以两个单独的库…

HarmonyOS 开发者联盟高级认证最新题库

本篇文章包含 Next 版本更新后高级认证题库中95%的题目。 答案正确率 50-60%&#xff0c;答案仅做参考。 请在考试前重点看一遍题目&#xff0c;勿要盲目抄答案。 欢迎在评论留言正确答案和未整理的题目。 1、下面关于方舟字节码格式PREF_IMM16_v8_v8描述正确的是 16位前缀操作…

OSU!题解(概率dp)

题目&#xff1a;OSU! - 洛谷 思路&#xff1a; 设E()表示截止到i所获得的分数&#xff1b; 对于到i点的每一个l&#xff0c;如果第i1点为1&#xff0c;那么会新增分数3*l^23*l1; 就有递推公式方程&#xff1a; E()E()p[i1]p*(3*l^23*l1);(p代表截止到i获得长度l的概率)&a…

C++ :友元类

友元类的概念和使用 (1)将类A声明为B中的friend class后&#xff0c;则A中所有成员函数都成为类B的友元函数了 (2)代码实战&#xff1a;友元类的定义和使用友元类是单向的 (3)友元类是单向的&#xff0c;代码实战验证 互为友元类 (1)2个类可以互为友元类&#xff0c;代码实战…

刷题了:数组理论基础,704. 二分查找,27. 移除元素

学习记录&#xff0c;主要参考&#xff1a;代码随想录 数组理论基础 数组是存放在连续内存空间上的相同类型数据的集合。 数组下标都是从0开始的 数组的元素是不能删的&#xff0c;只能覆盖。 704. 二分查找 要熟悉 根据 左闭右开&#xff0c;左闭右闭 两种区间规则 写出来…

Bubble Cup 13 - Finals [Online Mirror, unrated, Div. 2] --- G. Years (DSmap)

首先会想到树状数组或者差分&#xff0c;但是数据范围为1e9&#xff0c;所以不可取。 那么对于这道题就要用巧妙的方法。 我们可以看到题目也给出了一定的提示&#xff0c;输入的b和d代表了一个人的出生和死亡年份&#xff0c;那么也就是说&#xff0c;假如我们假设出眼前有一…

安全与加密常识(9)5分钟带你了解经常听到的cookie

文章目录 Cookie是什么Cookie有什么用Cookie的表示Cookie设置过程Cookie的生命周期 Cookie是什么 cookie的中文翻译是曲奇&#xff0c;小甜饼的意思。Cookie&#xff08;HTTP cookie&#xff09;是一种服务器存储在用户计算机上的小型数据文件&#xff0c;用于存储特定网站的用…

javaWeb 增删改查基本操作

通过之前的文章可以快速的了解SpringBoot 项目&#xff0c;这是一个关于增删改查的案例&#xff0c;可以巩固之前学习到的知识。 案例开始 准备工作 需求 开发员工管理系统&#xff0c;提供增删改查功能。 环境搭建 数据库&#xff08;mysql&#xff09; emp、dept表导入 #…

Oracle线上执行SQL特别慢的原因分析

一、背景&#xff1a; 线上反馈一张表select * from table where idxxx语句执行特别慢&#xff0c;超过60s超时不能处理&#xff0c;第一直觉是索引失效了&#xff0c;开始执行创建索引语句create index index_name on table() online。但是执行了超过20分钟索引还没有创建成功…

自动驾驶车道线检测系列—3D-LaneNet: End-to-End 3D Multiple Lane Detection

文章目录 1. 摘要概述2. 背景介绍3. 方法3.1 俯视图投影3.2 网络结构3.2.1 投影变换层3.2.2 投影变换层3.2.3 道路投影预测分支 3.3 车道预测头3.4 训练和真实值关联 4. 实验4.1 合成 3D 车道数据集4.2 真实世界 3D 车道数据集4.3 评估结果4.4 评估图像仅车道检测 5. 总结和讨论…

第59期|GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以找…

【Python与GUI开发】事件处理与打包分发

文章目录 前言 一、高级事件处理 1.自定义事件 2.拖放操作 3.复杂控件的事件处理 二、打包和分发 Tkinter 应用 1.PyInstaller 2.cx_Freeze 3.spec 文件 4.分发注意事项 三、实战示例&#xff1a;文件浏览器 总结 前言 在前面的讨论中&#xff0c;我们深入理解了 T…

Dev—c++小熊猫6.7.5免费下载攻略

点击蓝字 关注我们 今天我来给大家分享一个Dev—c小熊猫6.7.5免费下载攻略&#xff0c;内容如下 1. https://gitee.com/royqh1979/Dev-CPP/releases/tag/v6.7.5 点进这一个官网&#xff0c;一直往下滑&#xff0c;找到第三个选项&#xff0c;把它下载下来。 2. 安装时一些选择…

自制OJ在线判题网站

项目效果啊演示&#xff1a; 项目链接&#xff1a; Gitee:Oj: 自定义实现的OJ在线做题网站&#xff0c;自主实现代码沙箱 (gitee.com) GitHub:GitHub - SakanaYdy/Oj 仓库中含有完整的项目流程PDF文档&#xff0c;可以参考自定义OJ网站。 目前只支持Java语言&#xff0c;可以…

CSA笔记3-文件管理命令(补充)+vim+打包解包压缩解压缩命令

grep(-i -n -v -w) [rootxxx ~]# grep root anaconda-ks.cfg #匹配关键字所在的行 [rootxxx ~]# grep -i root anaconda-ks.cfg #-i 忽略大小写 [rootxxx ~]# grep -n root anaconda-ks.cfg #显示匹配到的行号 [rootxxx ~]# grep -v root anaconda-ks.cfg #-v 不匹配有…

大模型算法专家的逻辑推演

大家好&#xff0c;我是卢麒。 如今&#xff0c;各大电商平台对于大模型算法的研发已经历经了无数次的迭代。 本文基于大模型算法的一些实际应用&#xff0c;做一些分析。 一&#xff0c;大模型算法专家的技术应用 作为大模型算法专家&#xff0c;在技术应用时&#xff0c;…