当前位置: 首页 > article >正文

数据结构——栈和队列的相互模拟

栈只能一端进行插入和删除具有先进后出的特点队列一端进行插入一端进行删除具有先进先出的特点1.两个栈来模拟一个队列此时我们将第一个栈称为S1将第二个栈称为S2。思路入队栈的插入是只有一端进行插入。队列的插入也是只有一端进行插入。所以在宏观视觉上栈的插入和队列的插入没有什么区别。所以我们此时在进行插入是时候只需在S1这个栈上进行插入即可。出队因为队列只能一端进行插入而另一端进行删除具有先进先出的特点。而栈是只有一端进行插入和删除具有先进后出的特点。此时我们拥有两个栈在S1这个栈中已经拥有数据元素我们想要实现队列的删除效果需要将S1中的数据元素插入到S2中此时在最开始插入的数据本应在S1的栈底此时就在了S2的栈顶进行删除只需删除S2中的元素即可。具体思路是如此但是仍然有瑕疵如果S2中还有没有被删除完全的元素S1有新插入的元素并且我们还要删除元素呢那么此时我们我们就不能让S1中的数据先插入到S2当中因为相较于S1中的数据此时S2中的数据是先插入S1的只不过我们将其放置到了S2中而已为了满足队列的先进先出特特点我们此时必须先删除S2中的数据。也就意味着每次删除的时候我们必须先去判断S2是否为空不空则直接从S2中出一个数如果S2的空了则说明剩余数据全部均在S1中此时只需要将S1中的数据全部插入到S2中此时S2中有数据在S2上进行删除即可。图文解释假设一开始我们在S1中先插入了 45 然后是 56 最后是67此时我要删除数据就需要先将S1中的数据放置到S2中再进行删除 shan删除完45之后此时S2中剩下了 56 67 如果此时我再进行对S1的插入并且删除的话我仍然只能先删S2中的值当S2中的值完全没有的时候再将S1中的值全部插入到S2中代码实现1.结构体定义typedef struct TwoStack_toQueue { std::stackint S1; //std::-表示用C标准库里面的东西 //stack-表示栈 //int-表示栈里面存的数据是int 型 //S1:表示入队栈 //S2表示出队栈 std::stackint S2; }TwoStack_toQueue;入队bool TSQ_Push(TwoStack_toQueue* ptsq, int val) { //插入规则无脑的向S1插入 ptsq-S1.push(val); //通过指针找到入队栈S1 调用系统自带的插入函数 将val这个值进行插入 return true;出队bool TSQ_Pop(TwoStack_toQueue* ptsq) { if (!ptsq-S2.empty()) { ptsq-S2.pop(); return true; } //判断S2是否为空 如果不为空 直接删除 while (!ptsq-S1.empty()) //将S1中的全部的数据按照栈插入放置到S2中 { int tmp ptsq-S1.top(); //获取栈顶元素值 获取栈顶元素只具有将其值获取出来 没有其他权限 //将获取出的值初始化给tmp ptsq-S1.pop(); //删除S1中的栈顶元素值 不然每次获取的栈顶元素都是一个值 ptsq-S2.push(tmp); //将获取的值插入到S2中 } ptsq-S2.pop(); //删除S2中的栈顶元素值 return true; }2.两个队列来模拟一个栈队列:一端进行插入和一端进行删除具有先进先出的特点站栈只能在一端进行插入和删除具有先进后出的特点假设此时有两个队列分别为Q1 Q2思路入栈因为栈的插入就是一端进行插入队列也是一端进行插入他们的区别只在于删除所以宏观视觉上两个没有什么区别此时只需在Q1中持续插入即可出栈栈具有在同一端插入和删除具有先进后出的特点队列在一端插入一段删除具有先进后出的特点为了满足栈的先进后出的特点如果Q1非空此时就意味着我们要删除的值就在Q1的队尾将除了队尾元素外的其他元素全部按照队列插入插入到Q2中最后再删除Q1中的值。如果Q1空了此时就意味着我们要删除的值一定在Q2的队尾将除了队尾元素外的其他元素全部按照队列插入插入到Q1中最后再删除Q1中的值图文表示在队列Q1中插入值 12 23 34Q1非空所以此时我们要删除的值就是34也就是队尾元素将除了队尾元素外全部按照队列插入到Q2中直接删除34即可继续删除Q1空了此时我们要删除的元素就是23也就是Q2的队尾元素将除了队尾元素外将其他元素按照队列插入到Q1中。删除元素即可代码表示入栈bool TQS_Push(TwoQueue_toStack* ptqs, int val) { //插入规则无脑的向Q1插入 ptqs-Q1.push(val); return true; }出栈bool TQS_Pop(TwoQueue_toStack* ptqs) { if (!ptqs-Q1.empty()) { int Size_Q1 ptqs-Q1.size(); //获取队列有几个元素 for (int i 0; i Size_Q1 - 1; i) //因为我们要将除了队尾元素外其他的元素全部按照队列插入到Q2 所以循环只能是size-1 { ptqs-Q2.push(ptqs-Q1.front()); ptqs-Q1.pop(); } ptqs-Q1.pop(); return true; } int Size_Q2 ptqs-Q2.size(); for (int i 0; i Size_Q2 - 1; i) { ptqs-Q1.push(ptqs-Q2.front()); ptqs-Q2.pop(); } ptqs-Q2.pop(); return true; }

相关文章:

数据结构——栈和队列的相互模拟

栈:只能一端进行插入和删除,具有先进后出的特点队列:一端进行插入一端进行删除,具有先进先出的特点1.两个栈来模拟一个队列:此时我们将第一个栈称为S1,将第二个栈称为S2。思路:入队:…...

IT疑难杂症诊疗室:快速解决技术难题

以下是一篇关于“IT疑难杂症诊疗室”的技术文章大纲。该大纲旨在帮助读者系统性地诊断和解决IT常见问题,内容结构清晰,分为引言、问题分类、诊断方法、解决方案、预防措施和结论等部分。大纲设计基于真实IT支持经验,确保实用性和可操作性。1.…...

2026年最后的内存池升级窗口期已开启!错过本次,你的订单匹配引擎将无法通过中证协FPGA协同验证

更多请点击: https://intelliparadigm.com 第一章:2026年中证协FPGA协同验证对内存池的硬性技术要求 为满足中证协《2026年证券期货行业FPGA加速验证规范(V3.2)》强制条款,FPGA协同验证平台中的内存池必须在硬件抽象层…...

KMS_VL_ALL_AIO:3分钟彻底解决Windows和Office激活难题的终极方案

KMS_VL_ALL_AIO:3分钟彻底解决Windows和Office激活难题的终极方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统频繁弹出激活提示而烦恼吗?Office文档…...

车载Java微服务架构崩塌前夜:当Android Automotive与QNX Hypervisor共存时,你必须立即重构的4个IPC通信层

更多请点击: https://intelliparadigm.com 第一章:车载Java微服务架构崩塌前夜:当Android Automotive与QNX Hypervisor共存时,你必须立即重构的4个IPC通信层 在混合车载操作系统环境中,Android Automotive&#xff0…...

【信创验收倒计时】:Java系统通过等保2.0+国密SM2/SM4+中间件适配的9项必检清单

更多请点击: https://intelliparadigm.com 第一章:信创验收背景与Java系统国产化适配总体要求 在国家信息技术应用创新战略持续深化的背景下,信创项目验收已从“能用”全面转向“好用、安全、可控”。Java 系统作为政务、金融、能源等关键领…...

为什么你的Docker AI沙箱无法通过等保2.0三级认证?4类强制隔离缺口+3份可审计的auditd策略模板

更多请点击: https://intelliparadigm.com 第一章:Docker Sandbox 运行 AI 代码隔离技术 性能调优指南 Docker Sandbox 为 AI 模型推理与训练脚本提供了轻量级、可复现的隔离环境,但默认配置常导致 GPU 利用率偏低、内存抖动明显或 I/O 瓶颈…...

告别‘炼丹’低效!手把手教你用TinyViT的‘稀疏软标签’实现快速模型蒸馏

突破计算瓶颈:TinyViT稀疏软标签蒸馏实战指南 在模型压缩领域,知识蒸馏一直是个让人又爱又恨的技术。它能将大模型的知识精华提炼给小模型,但传统方法需要反复调用庞大的教师模型,这种"炼丹"过程不仅耗时耗力&#xff0…...

Stata实战:用estat vif和collin命令搞定多重共线性诊断(附完整代码)

Stata实战:多重共线性诊断的完整解决方案与深度解析 在实证研究过程中,我们常常会遇到一个令人头疼的问题——模型结果看起来不错,但某些自变量的系数符号与理论预期相反,或者统计显著性忽高忽低。这很可能就是多重共线性在作祟。…...

3个超实用技巧:让Mem Reduct内存清理工具完美适配中文环境

3个超实用技巧:让Mem Reduct内存清理工具完美适配中文环境 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memreduct …...

AIGC工具平台-LessonPPTCapCut课件制作

课程制作常需要反复准备模板、素材和剪映草稿目录,手工整理流程繁琐,也容易出现路径和模板错误。 LessonPPTCapCut 用于根据课程信息和模板生成课件结果或剪映草稿,支持配置管理、模板选择、课件制作和运行日志。 文章目录模块定位项目配置项…...

别再租GPU烧钱了!用Colab免费GPU+公开数据集,30分钟跑通YOLOv8商品识别模型

零成本玩转YOLOv8:Colab免费GPU公开数据集实战商品识别 在计算机视觉领域,YOLOv8作为目标检测的标杆算法,其应用场景早已从安防监控延伸到零售行业。想象一下,当你走进一家无人便利店,摄像头瞬间识别出你手中的商品并自…...

程序员技术成长路线图(2024版)

程序员技术成长路线图(2024版):技术浪潮下的进阶指南 在技术迭代加速的2024年,程序员如何规划成长路径?《程序员技术成长路线图(2024版)》结合行业趋势,为开发者提供了一份清晰的进…...

2026年热门做会议纪要神器app深度测评,翻车了大半网红款,黑马拉开的差距竟然这么大

我帮医疗圈和律所的朋友测了一圈2026年热门的会议纪要转写APP,踩了大半网红款的坑,对比下来,听脑AI是同类工具中最值得用的,尤其是对专业度、隐私性、转写效率要求高的医疗、法律从业者,听脑AI作为黑马拉开的差距比我预…...

2026年热门会议记录语音转文字工具实测对比,准确率比拼差距竟然这么大,真香款才是隐藏王者

对比了多款2026年热门的语音转文字工具,针对医疗、法律从业者最关心的专业术语识别、隐私保护、长录音处理三个核心维度实测完,听脑AI是综合体验最好的,也是目前同类工具中最值得推荐给专业从业者的选择。 直达链接:https://itin…...

vSAN维护模式选‘无操作’就万事大吉?详解关机重启前必须做的5项关键检查

vSAN维护模式选‘无操作’就万事大吉?详解关机重启前必须做的5项关键检查 在虚拟化运维领域,vSAN集群的关机重启操作看似简单,实则暗藏玄机。许多工程师习惯性地选择维护模式中的"无操作"选项,认为这样可以省去数据迁移…...

深度解析:Win11Debloat的Windows系统优化完整实践

深度解析:Win11Debloat的Windows系统优化完整实践 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and custom…...

银发经济新解法:魔珐星云 SDK 构建低延迟、高温情养老陪伴智能大屏

前言 2026 年我国 60 岁以上人口突破 3 亿,正式进入中度老龄化社会,万亿级银发经济赛道迎来爆发。但当前多数适老化智能设备,仅停留在放大字体、提高音量等表面优化,既没有真正跨越老年人的数字使用鸿沟,也无法弥补空巢…...

从设计到印刷:Acrobat 油墨管理器如何帮你省下专色印刷的冤枉钱

从设计到印刷:Acrobat油墨管理器如何帮你省下专色印刷的冤枉钱 在包装设计和印刷行业,专色(Pantone色)的使用一直是确保品牌色彩一致性的重要手段。然而,随着印刷成本的不断攀升,专色印刷带来的高昂版费让许…...

3步搞定Notion风格编辑器Novel:打造你的AI写作神器

3步搞定Notion风格编辑器Novel:打造你的AI写作神器 【免费下载链接】novel Notion-style WYSIWYG editor with AI-powered autocompletion. 项目地址: https://gitcode.com/gh_mirrors/no/novel 还在为寻找一款既美观又强大的开源编辑器而烦恼吗?…...

量子神经网络辐射场(QNeRF)技术解析与应用

1. 量子神经网络辐射场(QNeRF)技术解析量子计算与计算机视觉的交叉领域正在催生一系列创新性技术。作为这一领域的最新突破,量子神经网络辐射场(QNeRF)将传统神经辐射场(NeRF)的3D场景表示能力与量子计算的独特优势相结合,开创了3D重建和视角合成的新范式…...

风控规则变更要停服重启?Python动态AST解析器+YAML策略热加载,实现0.3秒内全量策略生效(含生产环境压测数据)

更多请点击: https://intelliparadigm.com 第一章:Python 电商实时风控决策 在高并发电商场景中,实时风控系统需在毫秒级完成欺诈识别、刷单检测与异常交易拦截。Python 凭借其丰富的生态(如 pandas、scikit-learn、Redis 客户端…...

LangChain4j工作流编排深度解析:Java智能体架构设计与最佳实践

LangChain4j工作流编排深度解析:Java智能体架构设计与最佳实践 【免费下载链接】langchain4j-examples 项目地址: https://gitcode.com/GitHub_Trending/la/langchain4j-examples LangChain4j-examples项目是Java生态中AI智能体工作流编排的权威参考实现&am…...

[具身智能-504]:使用Transformers python库进行大模型的再训练、部署、使用的示例

使用 Hugging Face 的 Transformers 库进行大模型的再训练、部署和使用,是 AI 开发的核心工作流。下面将通过一个完整的实战示例,带你从零开始,体验这三个关键环节。我们将以阿里的 Qwen2.5-7B-Instruct 模型为例,展示如何对其进行…...

5步掌握缠论可视化:自动化你的技术分析工作流

5步掌握缠论可视化:自动化你的技术分析工作流 【免费下载链接】Indicator 通达信缠论可视化分析插件 项目地址: https://gitcode.com/gh_mirrors/ind/Indicator 还在为手工分析复杂的缠论结构而烦恼吗?面对K线图上密密麻麻的价格波动,…...

Python 数据库优化:索引与查询

Python 数据库优化:索引与查询 核心原理 数据库索引的基本概念 数据库索引是一种数据结构,用于快速查询数据库表中的数据。其核心原理是通过创建一个排序的数据结构,将表中的数据按照索引列的值进行排序,从而加速查询操作。 索引的…...

论文投稿前让AI预审太好用啦!!!

作为一个拿过2项国自然青年基金、带过3届硕博生的高校青椒,今天给大家聊点掏心窝子的稿件打磨经验,都是我踩了无数坑、熬了无数夜攒出来的干货,不管你是要申基金、写毕业论文还是报专利,都能用得上。首先先给大家列3个科研人最容易…...

Playwright理解与封装

前言 之前对 Playwright 一直是懵懵懂懂的状态,用起来总觉得隔着一层纱。最近深入学习后,基本掌握了其主要概念,同时也基于自己的理解做了一个封装库。本文将分享我对 Playwright 的理解,以及如何将其封装成一个可以像普通浏览器…...

强化学习:从Q-Learning到SAC

强化学习:从Q-Learning到SAC 核心原理 强化学习的基本概念 强化学习(Reinforcement Learning, RL)是一种机器学习范式,通过智能体(Agent)与环境(Environment)的交互来学习最优策略。…...

Python 并发编程:最佳实践与性能

Python 并发编程:最佳实践与性能 核心原理 并发编程的基本概念 并发编程是指在同一时间内执行多个任务的编程范式,其核心目标是提高程序的执行效率和响应速度。在Python中,并发编程主要通过以下三种方式实现: 多线程(T…...