定义
栈(Stack)是一个后进先出的线性表,它要求只在表尾进行删除和插入操作。
注:表尾称为栈的栈顶(top),相应的表头称为栈底(bottom)。
栈的插入和删除操作
插入操作(Push):叫做进栈,也称为压栈、入栈。
删除操作(Pop):叫做出栈,也称为弹栈。
栈的存储结构
栈本身是一个线性表,线性表分为顺序存储结构和栈的链式存储结构两种存储形式。
顺序存储结构
定义:
typedef int ElemType;
typedef struct
{
ElemType *base; //指向栈底的指针变量
ElemType *top; //指向栈顶的指针变量
int stackSize; //指示栈的当前可使用的最大容量
}sqStack;
创建一个栈
#define STACK_INIT_SIZE 100 //初始化栈的空间为100
initStack(sqStack *S)
{
s->base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType)); //分配内存空间
if( !s -> base)
exit(0);
s->top = s->base; //最开始,栈顶就是栈底
s-&g