首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【图解】数据结构代码领背-10

01

顺序栈的基本运算:进栈

通过前面的学习我们知道,使用栈存储结构操作数据元素必须遵守 "先进后出" 的原则,按照之前的流程,在介绍完一种数据结构之后,我们就要来研究这种数据结构的基本运算操作。本节就 "如何使用顺序表模拟栈以及实现对栈中数据的基本操作(出栈和入栈)" 给大家做详细介绍。

01

图例

在接触进栈、判断栈空这些基本操作的代码之前,我们先来看一个例子。平时大家吃完饭,或许都被父母叫过来洗盘子做家务,通常我们洗盘子,会从没洗的脏盘子堆中拿出一个盘子开始在水池里洗,如图1所示,

图1

而每洗完一个盘子,我们就会把洗好的新盘子放到旁边,如图2,

图2

之后每洗完一个盘子,我们就把新洗好的盘子摆在最上面,直到全部盘子洗完(图3)

图3

我们每次把洗好的新盘子放在最上面这个操作,就好像往栈里面放一个元素,放完盘子洗好的盘子数目增加了,就好像栈中的元素增加了,同时我们也知道了最上面的元素,也就是栈顶现在是多少。

02

代码

结合这个例子,我们来看代码:

03

总结

在代码中我们实现入栈操作使用的是顺序栈,如果你仔细观察顺序表(底层实现是数组)和栈结构就会发现,它们存储数据的方式高度相似,只不过栈对数据的存取过程有特殊的限制,而顺序表没有。

从中我们可以把入栈步骤总结成3步:

1.判栈满:s.top == MaxSize – 1,如果栈顶已经到数组的末尾,则表明数组已经存储满,没法继续存储元素。

2.顶加一:放入一个元素,栈顶指针要往上移一位,也表明顺序栈数组当前的存储位置。

3.进元素:把要存储的的元素放入数组中。

02

顺序栈的基本运算:判断栈空

实际上,根据上节的学习,我们知道我们通常把空栈的判定条件定为栈顶指针top等于-1,所以代码我们很容易就能给出。

01

代码

02

总结

可以说顺序栈的基本运算虽然是一种新的数据结构的运算,但是其实现本质还是设有特殊规则的数组,在记忆代码的过程中,我们只需要把它作为有栈规则的数组去操作,动手画画图,这类代码也就不难解决。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210302A053O800?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券