基本概念
栈是一种只能在一端进行插入和删除操作的线性表
允许进行插入和删除操作的一端称为栈顶,另一端称为栈底。当栈中没有元素时,称为空栈。栈的插入操作称为进栈或入栈;栈的删除操作称为退栈或出栈。
栈是先进后出的线性表,即先进展的元素先出栈,比如一个狭窄(只有一个人宽度)的死胡同就类似一个栈,先进去的人只能等最后才能出,这就是先进后出。
一个栈应该包括数据部分和栈顶指针,数据部分用来存放数据,栈顶指针用来始终指向栈顶。空栈时,栈顶指针指向-1;当发生入栈时,先栈顶指针加一指向一个新的元素空间,然后将数据放入栈顶指针指向的这个空间;当发生出栈时,先将栈顶指针指向的数据读出,然后将栈顶指针减一。
代码
stack.c
#include "stack.h"
/*********************栈的顺序存储结构******************************/
void InitStack(SqStack& s)//初始化一个空栈
{
s = (SqStack)malloc(sizeof(SStkNode));
s->top = -1; //栈顶指向-1表示空栈,栈顶始终指向栈顶元素
}
void DestroyStack(SqStack& s)
{
free(s);//释放