全文共 940字,阅读文本大概需要 1.8 分钟。
前言
中秋的最后一天,在外地的各位也别忘了犒劳犒劳犒劳自己!
正文
说起来搞笑我以前在没有接触到编程的时候,加入了别人的编程群,见别人在群里说到栈,我以为是客栈,沉迷于武侠的我当时误解到原来编程还能用到客栈,有点东西,导致大学就选择了计算机专业。从此一入深入海。从此头发是路人。
定义
说正式那什么是栈呢,首先栈它是一种特殊线性表,特殊在什么地方呢,栈是限定只能在一头进行插入和删除操作。也就是后进先出的结构(Last In First Out)即 LIFO 结构
在最上面的为栈顶,最下面的为栈底。
可以理解为服务员端着一大摞盘子,你只能从上面一个一个的取或放。
因为栈是顺序结构可以使用数组作为栈的表的储存结构,要有一个栈顶指针 top 。栈顶指针中指向栈顶元素,定义一个栈的最大空间 MAXSIZE 栈顶指针 top 最大不能超过最大空间。
操作方式
栈的方式主要的操作方式有删除(出栈)和插入(入栈)
插入操作,叫入栈-也称为压栈
代码实现:
栈的删除操作,叫做出栈,也称弹栈
代码实现:
这就是静态栈的操作结构,虽然操作简单,但是当存储的元素类型为类类型时,创建静态栈时会多次调用元素类型的类构造函数,影响效率。
应用
-- 括号匹配
栈的后进先出的特点可以很方便的用于检测括号匹配。
从第一个字符开始扫描,遇到普通字符时忽略,遇到左符号时压入栈,遇到右符号时弹出栈顶元素进行匹配。如果匹配成功,所有字符扫描完毕并且栈为空;如果匹配失败,所有字符扫描完成但栈非空。
代码获取
即可获得上面的所有代码
对了小编昨天推荐的算法课程绝对不错:想要了解的看下面文章
通过小编的链接可返现 12 元
结尾
如果看了有所帮助,转发,分享给那些还在迷茫的人吧。
重点:还没有关注小编的长按下面二维码
关注订阅
带你领略多彩的编程世界
喜欢记得来个赞
---end---
如有其他公号作者需要转载的后台添加小编微信授权转载白名单
领取专属 10元无门槛券
私享最新 技术干货