概念
栈是只允许在一端插入或删除操作的线性表。(有且仅有一端进行插入或者删除操作)
只允许在栈顶操作,由上方栈的示意图可得出a1为栈底元素,是因为只允许在栈顶操作,所以a1应该是最先进入栈中的,a4为栈顶元素,同理可知a4是最后进入栈.由此可得出栈的一个重要的操作特性是先进后出。
栈的基本操作
itStack(S)∶初始化一个空栈S。
StackEmpty(S)∶判断一-个栈是否为空,若栈 s为空则返回true,否则返回 false。
Push (sS,x)∶进栈,若栈S未满,则将x加入使之成为新栈顶。
Pop(&S,&x)∶ 出栈,若栈s 非空,则弹出栈顶元素,并用x 返回。
GetTop (S,sx)∶读栈顶元素,若栈 s 非空,则用x返回栈顶元素。
DestroyStack(&S)∶销毁栈,并释放栈s占用的存储空间("&"表示引用调用)
栈是一种操作受限的线性表,有两种存储结构
顺序存储结构
链式存储结构
顺序栈的实现
#define Maxsize 50 //定义栈中元素的最大个数
typeef struct{
Elemtype data[MaxSize];//存放栈中元素
int top; //栈顶指针
} SqStack;
栈顶指针 初始 设置为S.top==-1;
栈顶元素 S.data[S.top]
进栈操作:栈顶指