目录
1. 顺序栈操作
上面的操作都是基于: 初始化栈的时候将 top 指针指向了 -1,有数据时指向栈顶元素。
如果初始化的时候将 top 指针指向 0 位置,这种方式是将 top 指针指向下一个我们可以插入元素的位置。
在这种情况下,
进行进栈操作的时候,代码应该为 S.data[S.top++]=x;
进行出栈操作的时候,代码应该为 x=S.data[--S.top];
栈满条件: top==MaxSzie;
==> 所以一定要审题清晰!!!
注意: 怎么销毁一个顺序栈呢?
首先需要在逻辑上把这个栈清空,然后回收栈所占用的内存空间。逻辑上清空一个栈,只需要将 top 指针指向初始化的那个位置。在这些代码中,使用的是变量声明的方式来分配相应的内存空间,并没有使用 malloc 函数,所以给栈分配的内存空间会在函数结束后由系统自动回收。
2. 共享栈
两个栈共享同一片内存空间。
栈满条件: top0+1=top1;