#Java#java数据结构系列——深入了解“栈”结构
文章图片
文章图片
文章图片
文章图片
栈作为一个常用的数据结构(如果有不太理解什么是数据结构的请点这里) , 其使用范围还是非常广泛的 。 今天我们就一起了解一下“栈” 。
简介栈是线性结构当中一种特殊的线性表 , 它会限制元素的插入和删除 , 并且是一个有序的列表 。 栈存取数据都是在线性表的一端进行的 , 存取数据的一端称为“栈顶” , 另一端则是“栈底” 。 这种存取方式就造就了栈具有先入后出的特点 , 也就是第一个存储的数据会在最后一个取出来 。 举个例子来说栈就像是一个弹夹 , 栈中的数据就好比是一枚枚的子弹 。 开枪射出的第一枚子弹都是最后一个压入弹夹的 。 这样说大家是不是大概都能明白栈是一种什么样的结构?如果还是不太清楚的话请看下图 。
通过上面的描述和图片相信大家对栈这个数据结构有了一个大致的概念 。 学习一个新东西肯定是为了使用 , 那么它有什么用途呢?别急别急 , 拿好小板凳让们来了解一下 。
应用场景
1、子程序的调用:在跳往子程序前 , 会先将下个指令的地址存到栈中 , 直到子程序执行完再将地址取出 , 以回到原来的程序中 。以上就是栈比较常见的一些应用场景 。 在之后的文章中我也会为大家仔细介绍这些场景下是如何运用栈的 。
2、处理递归调用:和子程序调用类似 , 除了存储下一个指令的地址外 , 也将参数、区域变量等数据存入栈中 。
3、表达式的转换【中缀表达式转后缀表达式】 。
4、二叉树的遍历 。
5、图形的深度优先(depth-first)搜索法 。
下面重头戏来喽 , 让我们一起来动手实现一个“栈”!
代码实现【#Java#java数据结构系列——深入了解“栈”结构】通过数组实现栈:
判断栈空的方法:
判断栈满的方法:
压栈(入栈)的方法:
弹栈(出栈)的方法:
今天的分享就到这了 , 如果感觉写得不错的记得点赞加关注哟!文章有问题的地方也希望大家可以提出 , 我会及时更改 。
- IT之家|Mate 9 系列更新 EMUI 9.1.0.228:新增智能充电模式,华为
- 小丸子说科技|HDMI2.1才是重点,小米大师系列电视除了屏幕顶级
- 威锋网|Note20或成系列有史以来最贵,Galaxy
- 「iphone12」iPhone12系列将于9月发布:四版本+更低价格,性能是主打亮点!
- 浪浪科技精选|Note 20 系列可能成为史上最贵的 Note 机型,消息称三星
- 王石头科技|30系列还值得买吗,应该选择哪款?,华为Mate 40要来了,Mate
- 小黑科技Ali|联发科老大哥前来助阵,华为Mate40系列再爆新料:不止麒麟
- 像梦一样奔驰|4100系列 性能较上代提升85%,高通发布智能手表芯片骁龙Wear
- 『iphone12』命名曝光!iPhone 12系列集体现身,价格比iPhone 11更便宜
- 科技杂志社|系列看一加手机的后壳探索之路,从一加8