#include<iostream>
using namespace std;
#define STACK_INIT_SIZE 100//存储空间初始分配量
#define STACKINCREMENT 10//存储空间分配增量
#define OVERFLOW -2
#define OK 1
#define ERROR -1
typedef int SElemType;
typedef int Status;
//顺序栈结构体定义
typedef struct {
SElemType * base;//底指针
SElemType * top;//顶指针
int stacksize;
}SqStack;
//初始化栈
Status InitStack(SqStack &S) {
S.base = new SElemType[STACK_INIT_SIZE];//动态分布一个空间
if (!S.base)exit(OVERFLOW);//exit退出函数
S.top = S.base;//顶指针与底指针相等,栈为空
S.stacksize = STACK_INIT_SIZE;
return OK;
}
//将元素 e 入栈
Status Push(SqStack &S, SElemType e) {
if (S.top - S.base >= S.stacksize)//栈满
S.base = new SElemType[STACK_INIT_SIZE + STACKINCREMENT];
//增加内存
if (!S.base)exit(OVERFLOW);//每次有新的内存申请都要判断
*S.top = e;//顶指针放入元素e
S.top++;//顶指针移动到下一个
//*S.top ++= e;简单写法
return OK;
}
//出栈,用 e 返回出栈元素
Status Pop(SqStack &S, SElemType &e) {
if (S.top == S.base)//判断栈是不是为空
return E
顺序栈实验代码C++
最新推荐文章于 2022-04-14 21:28:56 发布