栈的定义: 栈是一种只能在一端进行插入或删除操作的线性表。
原则: 后进先出。
小女孩想要数字为“2”的小球,男孩只能先把数字为“3”和“1”的小球拿出来,才能拿到小女孩想要的小球。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200810113821627.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDYzMDU2MA==,size_16,color_FFFFFF,t_70#pic_center)
栈的特有操作:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020081014242763.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDYzMDU2MA==,size_16,color_FFFFFF,t_70)
顺序栈4要素: 以MaxSize=5的栈为例
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818132633521.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDYzMDU2MA==,size_16,color_FFFFFF,t_70#pic_center)
- 栈空条件: top=-1
- 栈满条件: top=MaxSize-1
- 进栈e操作:top++; 将e放在top处
- 退栈操作: 从top处取出元素e; top–;
初始化栈initStack(&s)
- 建立一个新的空栈s,实际上是将栈顶指针指向-1即可
void InitStack( SqStack *&s )
{
s = (SqStack *)malloc(sizeof