📄 stack.h
字号:
#include "iostream.h"
#include "stdio.h"
#include "malloc.h"
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef char Status;
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef char SElemType;
typedef struct {
SElemType *base; // 存储空间基址
SElemType *top; // 栈顶指针
int stacksize; // 允许的最大存储空间以元素为单位
} SqStack;
Status InitStack (SqStack &S)
{
S.base = new SElemType[STACK_INIT_SIZE];
if (!S.base) return OVERFLOW; //存储分配失败
S.top = S.base;
S.stacksize = STACK_INIT_SIZE;
return OK;
}
Status ClearStack(SqStack &S)
{
S.top=S.base;
return OK;
}
Status StackEmpty(SqStack S)
{
if ((S.top-S.base)==0) return TRUE;
else return FALSE;
}
int StackLength(SqStack S)
{
return S.top-S.base;
}
Status GetTop(SqStack S, SElemType &e)
{ // 若栈不空,则用 e 返回S的栈顶元素,并返回OK;否则返回ERROR
if (S.top==0) return ERROR;
e=*(S.top-1); //返回非空栈中栈顶元素
return TRUE;
}
Status Push(SqStack &S, SElemType e)
{ // 若栈不满,则将 e 插入栈顶
if (S.top - S.base >= S.stacksize) //栈满
return OVERFLOW;
*S.top++ = e;
return OK;
}
Status Pop (SqStack &S, SElemType &e) {
// 若栈不空,则删除S的栈顶元素,
// 用 e 返回其值,并返回OK;
// 否则返回ERROR
if (S.top == S.base) return ERROR;
e = *--S.top;
return OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -