二.栈和队列
栈的抽象数据类型
ADT 栈(stack)
Data
同线性表。元素具有相同的类型,相邻元素具有前驱和后继关系
Operation
InitStack(* S) 初始化操作,建立一个空栈
DestoryStack(*S) 若栈存在,则销毁它
ClearStack(*S) 将栈清空
StackEmpty(S) 若栈为空,返回True,否则返回False
GetTop(S, *e) 若栈存在且非空,用e返回S的栈顶元素
Push(*S, e) 若栈存在,插入新元素e到栈中并成为栈顶元素
Pop(*S, *e) 删除栈S中栈顶元素,并用e返回
StackLength(S) 返回栈S的元素个数
1. 顺序存储的栈
#define MAXSIZE 50
#define SUCCESS 0
#define FAIL 1
typedef int Status;
typedef int SElemType;
typedef struct {
SElemType data[MAXSIZE];
int top;
}SqStack;
Status Push(SqStack *S, SElemType e) {
if (S->top == MAXSIZE - 1) {
return FAIL;
}
S->top++;
S->data[S->top] = e;
return SUCCESS;
}
Status Pop(SqStack