顺序栈的抽象类型表示及相关运算(C语言实现)
文章目录
一.顺序栈抽象类型定义
二.顺序栈的基本运算
1.顺序栈的抽象类型定义
#define MAXSIZE 100
#define NULLSTACK 1
#define OK 1
#define ERROR 0
typedef int Elemtype;
typedef struct {
Elemtype data[MAXSIZE];
int top; //栈顶指针
} SeqStack;
2.顺序栈的初始化
int InitStack(SeqStack *s) {
s->top = 0; //设置栈顶为0初始化空栈
return OK;
}
3.判空
int EmptyStack(SeqStack *s) {
if (s->top == 0) {
return NULLSTACK;
}
return 0;
}
4.进栈
int PushStack(SeqStack *s, Elemtype edata) {
if (s->top == MAXSIZE - 1)//判断栈满
return ERROR;
else {//入栈
s->top++;//指针上移
s->data[s->top] = edata;//数据入栈
return OK;
}
}
5.出栈
int PopStack(SeqStack *s) {
if (EmptyStack(s))//判栈空
return ERROR;
else {
s->top--;//指针下移出栈
return OK;
}
}
6.取栈顶元素
Elemtype GetTop(SeqStack *s) {
if (EmptyStack(s)) //栈空返回异常
return ERROR;
else
return s->data[s->top];
}