->Gitee源码点击这里<-
之前所实现的顺序表和链表都成为线性表,即他们的从逻辑上来看是连续的,线性的,按顺序的。
栈是一种特殊的线性表,其实现要基于顺序表或者链表,相比之下用顺序表来实现更优;
而和顺序表区别在于,栈不支持随机位置的数据插入和删除,入栈的数据遵循后进先出的原则。
栈的逻辑结构示意图:
接下来我们使用顺序表来实现一个栈。
首先定义一个结构体,该结构体包含了栈的相关信息:
typedef int STDatatype;
typedef struct Stack
{
STDatatype* a; //指向动态开辟的栈
int top = 0; //栈顶
int capacity = 0;//栈容量
};
接着对栈进行初始化
void StackInit(Stack* pst)
{
pst->a = (STDatatype*)malloc(sizeof(STDatatype) * 4);//给定栈的初始大小
if (pst->a == NULL)
{