小学生学C++编程语法知识(STL容器(6、认识Stack(栈)))

发布时间:2026/11/5 11:07:50

小学生学C++编程语法知识(STL容器(6、认识Stack(栈))) STL课程第六课《魔法盘子塔——认识Stack栈》本课目标理解什么是 Stack栈。掌握后进先出LIFO的特点。熟练使用push()、pop()、top()、size()、empty()。能够利用 Stack 完成简单模拟。为以后学习括号匹配、DFS、表达式计算打基础。第一幕 食堂里的盘子今天。程序王国的食堂开饭了。阿姨把盘子一个一个叠起来。画图 请问如果现在拿盘子。应该拿哪一个同学们都会回答最上面的。继续问为什么因为如果先拿最下面那个。整个盘子塔都会倒下来。所以。只能拿最上面的盘子。第二幕 什么叫后进先出第一个放进去的是①号盘子。后来放进去②号。③号。④号。⑤号。画图顶部 ⑤ ④ ③ ② ① 底部请问谁最先拿出来答案⑤号。也就是说最后放进去。最先拿出来。总结这就是后进先出英文LIFOLast In First Out后来的先走先来的后走。第三幕 Queue和Stack有什么不同画图。Queue ↑ ↑ 出 进Stack ↑ 进、出总结Queue两头操作。Stack永远只操作顶部。第四幕 请出Stack头文件#includeiostream #includestack using namespace std;创建Stack。stackint st;解释stack表示栈。int保存整数。st变量名字。第五幕 放盘子——push()先放10st.push(10);盘子10继续st.push(20);变成20 10继续st.push(30);变成30 20 10强调push永远放最上面。第六幕 拿盘子——pop()现在拿盘子。st.pop();谁离开当然30。变成20 10再st.pop();变成10老师强调pop永远删除栈顶。第七幕 看看最上面的盘子请问最上面是谁直接st.top()例如coutst.top();输出20top。就是顶部。第八幕 栈还有几个盘子st.size();例如coutst.size();输出2第九幕 栈空了吗st.empty();例如if(st.empty()) { cout没有盘子; }第十幕 Stack不能这样做请问Vectora[3]Stack可以吗答案不能。请问Queue可以遍历吗也不能。Stack更加不能。因为。Stack只能看到顶部。第十一幕 演示程序#includeiostream #includestack using namespace std; int main() { stackint st; st.push(10); st.push(20); st.push(30); cout栈顶st.top()endl; st.pop(); cout新的栈顶st.top()endl; cout元素个数st.size()endl; return 0; }输出栈顶30 新的栈顶20 元素个数2第十二幕 课堂小游戏依次执行push(5) push(8) push(2) pop() push(9)请画图。开始空↓5↓8 5↓2 8 5↓8 5↓9 8 5请问top是谁答案9第十三幕 课堂实践一——撤销功能Undo请问为什么Word里面。CtrlZ。可以撤销因为。每操作一步。都保存一次。例如输入A B CStackC B A点击撤销。就是pop()删除C。又撤销。删除B。是不是很方便第十四幕 课堂实践二——浏览器返回浏览器。访问百度 新闻 天气 地图请问点击返回。去哪地图退出。回天气。再返回。回新闻。这就是Stack。第十五幕 课堂实践三——字符串反转输入hello要求输出olleh思路依次把每个字符压入栈。h e l l o然后不断top() pop()输出olleh参考程序#includeiostream #includestack using namespace std; int main() { stackchar st; string s; cins; for(char c:s) { st.push(c); } while(!st.empty()) { coutst.top(); st.pop(); } return 0; }输入hello输出olleh第十六幕 Stack真正的大本领——括号匹配汉克老师展示(()()) ((())) (()(问是否合法以后。学习括号匹配。全部要用Stack。今天先认识下。以后专门讲。第十七幕 DFS也离不开Stack我们学习深度优先搜索DFS。虽然递归帮我们自动维护了调用栈但如果不用递归也可以自己写一个stack来完成搜索。因此Stack 是很多算法的重要基础。Queue 和 Stack 对比Queue队列Stack栈先进先出FIFO后进先出LIFO两端操作只操作栈顶front()看队首top()看栈顶BFS 常用DFS、括号匹配、撤销操作常用画图Queue进入 → → 离开Stack ↑ push ↓ pop本课总结今天我们认识了Stack栈。它最大的特点就是后进先出LIFOLast In First Out。掌握了五个最常用的成员函数成员函数作用生活中的理解push(x)压入栈顶放一个新盘子到最上面pop()删除栈顶拿走最上面的盘子top()查看栈顶看最上面的盘子size()元素个数数一数盘子有多少个empty()是否为空看盘子塔是否已经空了一句话口诀盘子高高往上放后来盘子先离场push往上压pop从上拿top看顶部empty看有没有学会 Stack 不发愁DFS、括号全都有为什么递归像 Stack我们同学很多会递归却不知道为什么会出现函数调用栈。举例小明要完成任务A但任务A需要先完成任务B任务B又需要先完成任务C。于是执行顺序变成开始A ↓ 开始B ↓ 开始CC 完成后再返回 B结束A ↑ 结束B ↑ 结束C这和盘子一模一样调用函数不断push。函数结束不断pop。同学们现在就更加理解什么是压栈push、什么是出栈pop。
延伸阅读

更多相关文章

2026/10/27 12:37:53

达林顿管选型与应用指南:核心参数与2026技术趋势

1. 达林顿管基础认知与核心参数解析达林顿管作为功率放大电路中的关键元件,本质上是由两个双极型晶体管(BJT)复合而成的高增益器件。这种结构使其电流放大系数可达数千倍,特别适合驱动继电器、电机等大电流负载。在2026年的电子元…

2026/10/28 14:14:30

七彩虹RTX 5060 Ti显卡评测:性能与散热实测

1. 装机实测:iGame GeForce RTX 5060 Ti Ultra W OC深度体验最近拿到七彩虹iGame GeForce RTX 5060 Ti Ultra W OC显卡,这款显卡最吸引我的就是它的双色设计和背插式安装选项。作为一款中高端显卡,它在性能和外观上都有不少亮点。下面我就从开…

2026/10/24 17:12:15

C++约束模板优化:从概念到编译器性能提升的实战指南

1. 为什么需要约束模板?传统的 C 模板编程虽然强大,但一直面临两个核心痛点:晦涩的错误信息和复杂的 SFINAE 技巧。当模板参数不满足隐式要求时,编译器会爆出数百行的实例化回溯错误,让开发者无从下手。C20 引入的 Con…

2026/11/5 10:43:56

工业测温方案解析:ADS122U04与STM32F042K6的UART高精度RTD采集设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 10:43:56

STM32L031+ADS122U04:UART接口24位ADC实现PT100高精度温度采集

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 10:43:55

基于ADS122U04与MK24的HVAC高精度温度采集系统设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 10:38:55

Univer开源Web Office引擎:Canvas渲染与协同编辑实战解析

第一次看到Univer这个项目名字的时候,我下意识以为是哪个海外团队用“University”做的教育类产品。直到我翻完它的仓库和在线Demo,才发现自己差点错过一个好东西——这是一个把“在线电子表格、文档、幻灯片”全部做成开源引擎的Web Office项目&#xf…

2026/11/5 10:38:55

Foxmail数字签名与加密配置全指南:S/MIME证书实战落地

1. 邮件签名与加密不是“加个水印”或“点个锁图标”那么简单很多人第一次在Foxmail里找“签名”功能,点开设置就以为万事大吉——填上姓名、电话、公司logo,保存退出,邮件发出去带个固定落款,就觉得“搞定”。等真遇到客户问“你…

2026/11/5 10:38:55

LVS负载均衡优化:FWM标记与持久化服务实践

1. 为什么需要优化LVS调度?在企业级负载均衡场景中,Linux Virtual Server(LVS)作为四层负载均衡的经典解决方案,其性能表现直接影响着整个业务系统的稳定性。但在实际生产环境中,我们常常会遇到两个典型问题…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 0:02:07

多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中…

2026/11/5 0:02:07

大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#…

2026/11/5 0:02:07

鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑