#define MAXSIZE 100
typedef struct{
          SElemType *base; //栈底指针
          SElemType *top; //栈顶指针
          int stacksize; //栈可用最大容量        
}SqStack;

以上为顺序栈的表示,定义了个结构类型,SqStack

顺序栈的表示:

顺序栈操作01_赋值

 

 注意上图左侧部分的最后一行,看似是两个指针相减,实际得到的是两个元素之间相差多少元素。

同时!!!!!相同数组才可以这么做,不是同一个数组,绝对不能这样做!!!!!!!

-----------------------------------------------------------------------------------------------------------------

顺序栈的初始化

① 开辟出来一个固定大小的空间,用 stacksize 表示其大小

② 让 top 和 base 指针指向下标为0的地方

#define MAXSIZE 100
typedef struct{
          SElemType *base; //栈底指针
          SElemType *top; //栈顶指针
          int stacksize; //栈可用最大容量        
}SqStack;

Status InitStack(SqStack &S){ //构造一个空栈
          // new 一个类型,元素个数为MAXSIZE
          // 如果类型后面跟了大小,则就是这种类型的一个数组
          S.base = new SElemType[MAXSIZE]; 

          // 如果用C语言的话,则用下面这行,用动态分配函数分配出,然后把它转换成
          // SElemType 类型的指针,把它赋值给 base
          S.base = (SElemType*)malloc(MAXSIZE*sizeof(SElemType));
          
          // 接着判断一下是否分配成功,分配成功的话,S.base就有一个地址,否则为空
          // 如果是非0的就分配成功了。
          if (!S.base) exit (OVERFLOW); // 存储分配失败
          
          // 栈顶指针 等于 栈底指针
          S.top = S.base;
          
          // 设定栈的大小限制
          S.stacksize = MAXSIZE;

          return OK;
}