基本操作:
初始化栈
InitStack(&S)
判断栈空
EmptyStack(&S);
判断栈满
StackFull(&S);
获取栈顶元素
GetTop(&S);
进栈
Push(&S);
出栈
Pop(&S);
正片开始
初始化栈
int InitStack(SqStack &s){
S.top=-1;
return OK;
}
结构体先声明一下
#define MaxSize 100
typedef struct{
DataType data[Maxsize];
int top;
}SqStack;
判断空
int StackEmpty(SqStack S){
return (S.top==-1?TRUE:FALSE;);
}
判断栈满
int StackFull(SqStack S){
return (S.top==maxsize-1?TRUE:FLASE;);
}
进栈
int Push(SqStack &S,DataType e){
if(StackFull(S)) retuern ERROR;
S.top++;
S.data[S.top]=e;
retuern OK;
}
出栈
int Pop(SqStack &S,DataType &e){
if(StackEmpty(S)) return ERROR;
e=S.data[top];
S.top--;
return OK;
}
取栈顶元素
int GetTOp(SqStack S,DataType &e){
if(StackEmpty(S)) return ERROER;
e=S.data[top];
return OK;
}
以上是栈的顺序存储
接下来是链式存储
和链式存储相不同的是顺序是以数组实现,链式是用数组形成的,下一章节讨论