盖子的c++小课堂——第十八讲:栈

这篇具有很好参考价值的文章主要介绍了盖子的c++小课堂——第十八讲:栈。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

栈的定义

栈,是什么?

例1-弹夹

问题

例2-停车场

问题

栈的概念

空栈

进栈、出栈

特点

例题

车厢调度

 如何操作

数组模拟栈

入栈

出栈

栈的基本操作

判断空栈

 求栈的元素数量

读栈顶元素

总结


前言

OK呀,说到做到,我们的粉丝们也是很给力呀,终于破了400粉~~

盖子的c++小课堂——第十八讲:栈,盖子的c++小课堂(1),c++

盖子的c++小课堂——第十八讲:栈,盖子的c++小课堂(1),c++

我太感动了aaaaaaaaaaaaaaaaaaaaaaaa 

话不多说,我们直接开始!

栈的定义

栈,是什么?

例1-弹夹

你见过手枪吗?它长什么样?

啊对,就是这个~

那弹夹呢,总该见过吧,就是这样的,那你知道手枪发射子弹的方式吗

问题

手枪先打出的是先状填的子弹还是后装填的子弹呢?

手枪弹夹的出入口在哪里呢?

 给大家配了副图,可以自己思考思考,我想肯定难不住你们~~嘿嘿

盖子的c++小课堂——第十八讲:栈,盖子的c++小课堂(1),c++

例2-停车场

问题

停车场只有一个出入口,你想先离开,需要先进去还是后进去呢?

盖子的c++小课堂——第十八讲:栈,盖子的c++小课堂(1),c++

栈的概念

栈是线性表,但只有一个出入口

盖子的c++小课堂——第十八讲:栈,盖子的c++小课堂(1),c++

允许插入或删除的栈称为栈顶,另一端称为栈底

空栈

空栈指不含任何数据元素的栈

进栈、出栈

盖子的c++小课堂——第十八讲:栈,盖子的c++小课堂(1),c++

特点

后进先出(Last in first out),简称LIFO

先进后出(First in last out),简称FILO

插入操作:进展 push

删除操作:出栈 pop

例题

车厢调度

有一个火车站,每辆火车从A驶入,再从B方向驶出,同时它的车厢可以重新组合。假设从A方向驶来的火车有n节(n<=1000),分别按照顺序编号为1,2,3,…,n。假定在进入车站前,每节车厢之间都不是连着的,并且它们可以自行移动到B处的铁轨上。另外假定车站C可以停放任意多节车厢。但是一旦进入车站C,它就不能再回到A方向的铁轨上了,并且一旦当它进入B方向的铁轨,它就不能再回到车站C。 负责车厢调度的工作人员需要知道能否使它以a1,a2,…,an的顺序从B方向驶出,请来判断能否得到指定的车厢顺序。

盖子的c++小课堂——第十八讲:栈,盖子的c++小课堂(1),c++

 如何操作

盖子的c++小课堂——第十八讲:栈,盖子的c++小课堂(1),c++或者这样?盖子的c++小课堂——第十八讲:栈,盖子的c++小课堂(1),c++

数组模拟栈

设定栈的最大容量为N

const int N=10009;

定义栈,用整数数组储存

int stk[N];

定义栈顶编号,初始化为零

int top=0;

入栈

入栈前判断栈是否已满 
栈定编号向上移动一位
存入新入栈元素 

void push(int x){
	if(top==N-1)
	    cout<<"overflow"<<endl;
	else
	    stk[++top]=x;
}

 时间复杂度O(1)

出栈

出栈前判断栈是否 为空 
栈定编号向下移动一位
删除栈顶元素 

void pop(){
	if(top==0)
	    cout<<"underflow"<<endl;
	else
	    top--;
}

  时间复杂度O(1)

栈的基本操作

判断空栈

bool empty(){
	return top==0;
} 

 求栈的元素数量

int size(){
	return top;
}

读栈顶元素

int getTop(){
	return stk[top];
}

总结

今天的小课堂就到这里了,记得点赞关注加收藏哦~~

破500粉丝就去认证!!!等我好消息哟~~文章来源地址https://www.toymoban.com/news/detail-537745.html

到了这里,关于盖子的c++小课堂——第十八讲:栈的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 华为HCIE课堂笔记第十八章 SR技术

    SR可以通过控制器实现集中算路,并根据业务的不同下发不同的路径给到头端设备,头端设备将路径标签通过标签栈的形式压入到报文中,沿途的设备不需要维护路径信息,仅按照标签栈中的栈顶进行报文转发即可。 控制平面:扩展后的IGP协议,通过IGP分发标签 转发平面:基

    2024年02月19日
    浏览(13)
  • C++学习第十八天(函数模板)

    模板 1.1 模板的概念 模板就是 建立通用的模具,大大提高复用性,特点:模板不可以直接使用,他只是一个框架;模板的通用并不是万能的。 1.2 函数模板语法 函数模板的作用:建立一个通用函数,其函数返回值类型和形参类型可以不具体定制,用一个虚拟的类型来代表。

    2024年02月13日
    浏览(8)
  • C++学习第十八天----switch语句

    1. ?:运算符         条件运算符,又叫三元运算符;         该运算符的通用格式为:                 expression1?expression2 :expression3;         意义是假如1为true,则整个条件表达式的值为2的值,否则为3的值; 2.switch语句         通用格式为:            

    2024年02月11日
    浏览(9)
  • C++ Primer第五版_第十八章习题答案(11~20)

    练习18.11 为什么 what 函数不应该抛出异常? what中如果抛出异常,需要try catch捕获,再调用what,一直循环,直达内存耗尽。 练习18.12 将你为之前各章练习编写的程序放置在各自的命名空间中。也就是说,命名空间chapter15包含Query程序的代码,命名空间chapter10包含TextQuery的代码

    2024年02月06日
    浏览(11)
  • 【Java基础教程】(三十八)常用类库篇 · 第八讲:数组操作类——解析Arrays类中的全部操作方法,解锁Java数组操作技巧~

    【Java基础教程】(三十八)常用类库篇 · 第八讲:数组操作类——解析Arrays类中的全部操作方法,解锁Java数组操作技巧~

    前言:在学习本文之前,应该先学习并清楚了解Java基础部分的数组相关的概念和知识。 若还不具备学习条件,请先前往学习数组部分的基础知识: 《【Java基础教程】(八)面向对象篇 · 第二讲:Java 数组全面解析——动态与静态初始化、二维数组、方法参数传递、排序与转

    2024年02月15日
    浏览(22)
  • 第十八节——插槽

    在Vue中,插槽(Slots)是一种用于组件模板中的特殊语法,用于实现组件的内容分发和复用。插槽允许父组件在子组件的模板中插入任意的内容,从而实现更灵活的组件组合和定制 默认插槽是最常用的插槽类型。在子组件的模板中,使用slot/slot标签定义默认插槽的位置。父组

    2024年02月05日
    浏览(10)
  • 第十八章 Unity 协程

    第十八章 Unity 协程

    我们知道脚本都是继承自MonoBehaviour类,而其中的Update方法里面放置了大部分的游戏逻辑处理代码。Update方法是游戏循环的每一帧都去执行,这就要求我们的代码“无时无刻”不在处理所有的可能发生的情况,并做出相应的处理。如果我们想要完成“一段时间”的逻辑代码,例

    2024年02月05日
    浏览(11)
  • 每日三问-前端(第十八期)

    先来回顾一下上期的问题及答案: 2023年6月7日 1. 组件间通信是指在 Vue.js 中,不同组件之间进行数据或事件的传递和交互的过程。常用的组件通信方式包括: 父子组件通信:通过 props 属性将数据从父组件传递给子组件,子组件通过监听 props 的变化来获取父组件传递的数据。

    2024年02月08日
    浏览(12)
  • 华为HCIE课堂笔记第十六章 Qos基本原理

    Qos:在带宽有限的情况下,为不同的业务需求,提供不同的网络的服务质量。 影响Qos的不同的因素: 带宽,链路在单位时间可以传输数据的bit数量,单位bps 一般上传下载速度为带宽/8,即100M带宽显示速度理论值12.5MB/s 延迟:报文从一端发出,从另一端接受到经过的时间 处理

    2024年01月18日
    浏览(20)
  • 第十八章 ObjectScript - 使用例程

    可以将例程视为 ObjectScript 程序。例程可以从头开始编写,也可以在编译类时自动生成。 在 ObjectScript 例程中,标签定义以下代码单元之一的起点: Procedures 过程(可选地返回一个值)。过程中定义的变量是该过程私有的,这意味着它们不可用于其他代码。对于函数和子例程

    2024年02月10日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包