【玩转栈和队列①】栈的C语言实现(动图演绎)

一、前言

🐱‍💻文章难度: ★☆☆☆☆
🐱‍👤适合对象:C语言玩家 + 栈和队列初学者
🐱‍🐉知识储备:栈和队列的实现基于顺序表和链表
🐱‍🚀专栏宣传:算法入门系列长期更新,欢迎点赞收藏,祝大家学有所获。
🐱‍👓代码仓库:罅隙/数据结构【完整代码请参见Gitee仓库】

二、栈的结构特点

①基本概要
> 栈是一种特殊的线性表,其只允许在**固定的一端**进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守LIFO(Last In First Out)的原则
大家有一个基本的概念即可,在接下的接口实现里,大家会有更深刻的理解。
②栈的数组形式实现
在这里插入图片描述
(1)因为我们要动态修改栈空间的大小,所以我们需要定义指针成员
(2)表示栈空间的容量,容量不够时需要扩容
(3)指向栈顶

三、StackInit接口

【作用】:初始化栈在这里插入图片描述
【注意事项】
(1)初始化top时可以指向0也可以指向-1,它们所表示的含义不同。指向0则top则指向栈顶有效元素的下一个,指向-1则表示指向栈顶元素。这里采用top指向0实现。

四、 StackPush()接口

①动图讲解

[作用]:从栈顶压入一个元素。
[动图演示]
在这里插入图片描述

②接口详解

在这里插入图片描述
【注意事项】
(1)每次压栈即插入元素,首先需要检查栈空间是否满了
(2)我们在初始化的时候由于将capacity初始化为0,所以在进行扩容前需要额外判断检查
(3)插入元素后,top加加指向栈顶元素的下一个

五、StackPop()接口

①动图讲解

【作用】:从栈顶弹出一个元素
【动图演示】在这里插入图片描述

在这里插入图片描述
【注意事项】
1.用数组实现的栈出栈操作非常简单,只需要使得top–,下次push的时候就可以将其覆盖

六、StackSize()接口

【作用】:返回栈中的元素个数
在这里插入图片描述

七、StackEmpty()接口

【作用】:判断栈是否为空
在这里插入图片描述

八、StackDesttroy()接口

【作用】:销毁栈,释放内存
在这里插入图片描述

九、StackTop()接口

【作用】:返回栈顶元素
在这里插入图片描述

十、链表实现与数组实现栈的比较

①链表栈图解

1、push相当于头插
在这里插入图片描述
2.pop接口相当于头删
在这里插入图片描述

②两种方式优缺点比较

在这里插入图片描述

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

罅隙`

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值