本文已参与「新人创作礼」活动,一起开启掘金创作之路。
一、栈的结构特点
①基本概要
大家有一个基本的概念即可,在接下的接口实现里,大家会有更深刻的理解。 ②栈的数组形式实现
(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接口相当于头删
