栈(Stack)是只允许在一端进行插入或删除操作的线性表。其特点是他的元素后进先出(Last In First Out (LIFO))。
在实现栈的时候需要设置一个成员用于存放栈顶游标(top)(储存栈顶元素的位置信息),有的把最后一个元素的下标作为栈顶记录。
设顺序栈为S,需要注意的如下:
入栈:
栈满时 S.top-S.base==S.stacksize
出栈:
栈空时 S.top == S.base
取栈顶元素:
++会改变自身值,而-1不会改变,故返回*(S.top-1);
顺序栈特点:
由于顺序栈和顺序表一样, 受到最大空间容量的限制, 虽然可以在 “满员” 时重新分配空间扩大容量, 但工作量较大,因此在应用程序无法预先估计栈可能达到的最大容量时,应该尽量避免使用顺序栈。
#include
#include
#define MAXSIZE 100
typedef int SElemType;
//顺序栈的存储结构
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize; //可用最大容量
}SqStack;
//初始化
void InitStack(SqStack &S)
{
<