栈的C语言实现(动图演绎)

198 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一、栈的结构特点

①基本概要 > 栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出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()接口

①动图讲解

【作用】:从栈顶弹出一个元素 【动图演示】:![在这里插入图片描述](img-blog.csdnimg.cn/3e8021a7d34… =600x)

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

五、StackSize()接口

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

六、StackEmpty()接口

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

七、StackDesttroy()接口

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

八、StackTop()接口

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

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

①链表栈图解

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

②两种方式优缺点比较

在这里插入图片描述