通过此文来理解栈

全文共 940字,阅读文本大概需要 1.8 分钟。

前言

中秋的最后一天,在外地的各位也别忘了犒劳犒劳犒劳自己!

正文

说起来搞笑我以前在没有接触到编程的时候,加入了别人的编程群,见别人在群里说到栈,我以为是客栈,沉迷于武侠的我当时误解到原来编程还能用到客栈,有点东西,导致大学就选择了计算机专业。从此一入深入海。从此头发是路人。

定义

说正式那什么是栈呢,首先栈它是一种特殊线性表,特殊在什么地方呢,栈是限定只能在一头进行插入和删除操作。也就是后进先出的结构(Last In First Out)即 LIFO 结构

在最上面的为栈顶,最下面的为栈底。

可以理解为服务员端着一大摞盘子,你只能从上面一个一个的取或放。

因为栈是顺序结构可以使用数组作为栈的表的储存结构,要有一个栈顶指针 top 。栈顶指针中指向栈顶元素,定义一个栈的最大空间 MAXSIZE 栈顶指针 top 最大不能超过最大空间。

操作方式

栈的方式主要的操作方式有删除(出栈)和插入(入栈)

插入操作,叫入栈-也称为压栈

代码实现:

栈的删除操作,叫做出栈,也称弹栈

代码实现:

这就是静态栈的操作结构,虽然操作简单,但是当存储的元素类型为类类型时,创建静态栈时会多次调用元素类型的类构造函数,影响效率。

应用

-- 括号匹配

栈的后进先出的特点可以很方便的用于检测括号匹配。

从第一个字符开始扫描,遇到普通字符时忽略,遇到左符号时压入栈,遇到右符号时弹出栈顶元素进行匹配。如果匹配成功,所有字符扫描完毕并且栈为空;如果匹配失败,所有字符扫描完成但栈非空。

代码获取

即可获得上面的所有代码

对了小编昨天推荐的算法课程绝对不错:想要了解的看下面文章

通过小编的链接可返现 12 元

结尾

如果看了有所帮助,转发,分享给那些还在迷茫的人吧。

重点:还没有关注小编的长按下面二维码

关注订阅

带你领略多彩的编程世界

喜欢记得来个赞

---end---

如有其他公号作者需要转载的后台添加小编微信授权转载白名单

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180924G13EF500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券