1、共享栈:利用栈底位置相对不变的特性,让两个顺序栈共享一个一维数组空间。
2、共享栈的存储结构:
#define stacklen 100
typedef struct{
char ch[stacklen];
int top1; //左边栈的栈顶
int top2; //右边栈的栈顶
}sharestack;
3、共享栈的初始化
Status InitShareStack(sharestack &S){
S.top1=0;
S.top2=stacklen;
return ok;
}
4、共享栈的入栈操作
Status IntoShareStack1(sharestack &S ,char e){
if(S.top1 + 1==S.top2) //判断栈是否已满
return ERROR;
S.ch[S.top1]=e;
S.top1++;
return OK;
}
Status IntoShareStack2(sharestack &S ,char e){
if(S.top1 + 1==S.top2) //判断栈是否已满
return ERROR;
S.top2--;
S.ch[S.top2]=e;
return OK;
}
5、共享栈的出栈操作
Status OutShareStack1(sharestack &S ,char e){
if(S.top2-S.top1==stacklen) //判断是否栈空
return ERROR;
e=S.ch[S.top1];
S.top1--;
return OK;
}
Status OutShareStack2(sharestack &S ,char e){
if(S.top2-S.top1==stacklen) //判断是否栈空
return ERROR;
e=S.ch[S.top2];
S.top2++;
return OK;
}