#include<stdio.h>
#include<stdlib.h>
#define STACK_SIZE 10
typedef int ElemType;
typedef struct {
ElemType *top;
ElemType *base;
int stacksize;
}SqStack;
//初始化顺序栈
int InitStack(SqStack &S){
S.base=(ElemType *)malloc(STACK_SIZE*sizeof(ElemType));
S.top=S.base;
S.stacksize=STACK_SIZE;
return 0;
}
//压入元素
int PushStack(SqStack &S,ElemType e){
if(S.top-S.base>=S.stacksize)
return -1;
*(S.top)++=e;
return 0;
}
//得到栈顶元素并删除栈顶元素
int PopStack(SqStack &S,ElemType &e){
if(S.top==S.base)
return -1;
e=*--(S.top);
return 0;
}
//得到栈顶元素
int GetStack(SqStack S,ElemType &e){
if(S.top>S.base){
e=*(S.top-1);
return e;
}
else
return 0;
}
//清空顺序栈
int ClearStack(SqStack &S){
S.top=S.base;
return 0;
}
//判空
int EmptyStack(SqStack S){
if(S.top==S.base)
return 1;
else
return 0;
}
//栈的长度
int LengthStack(SqStack S){
return S.top-S.base;
}
int main(){
SqStack S;
int i,e;
InitStack(S);
printf("%d",LengthStack(S));
printf("\n");
for(i=1;i<=5;i++){
PushStack(S,i);
}
for(i=1;i<=LengthStack(S);i++){
printf("%d ",*(S.top-i));
}
printf("\n");
PopStack(S,e);
printf("%d ",e);
printf("\n");
for(i=1;i<=LengthStack(S);i++){
printf("%d ",*(S.top-i));
}
printf("\n");
GetStack(S,e);
printf("%d",e);
printf("\n");
ClearStack(S);
printf("%d",EmptyStack(S));
return 0;
}
顺序栈学习
最新推荐文章于 2017-08-23 17:47:10 发布