1. 共享栈的存储类型及初始化
typedef struct sharestack {
ElemType data[MaxSize];
int top[2];
}shareStack;
void shareStackInitiation(shareStack& SS) {
SS.top[0] = -1;
SS.top[1] = MaxSize;
}
2. 共享栈的入栈操作
bool pushInToShareStack(shareStack &SS,int i,ElemType x) {//i表示栈号,即放入哪一个共享栈
if (i < 0 || i>1) {
printf("非法栈号!");
return false;
}
if (SS.top[1] - SS.top[0] == 1) {
printf("栈空间已满!");
exit(0);
}
switch (i) {
case 0:
SS.data[++SS.top[0]] = x;
break;
case 1:
SS.data[--SS.top[1]] = x;
break;
}
printf("入栈成功!\n");
return true;
}
3. 共享栈的弹栈操作
bool popShareStack(shareStack& SS, int i, ElemType e) {
if (i < 0 || i>1) {
printf("非法栈号!");
return false;
}
switch (i) {
case 0:
if (SS.top[0] == -1) {
printf("栈空错误!");
return false;
}
e = SS.data[SS.top[0]--];
break;
case 1:
if (SS.top[1] == MaxSize) {
printf("栈空错误!");
return false;
}
e = SS.data[SS.top[1]++];
break;
}
printf("出栈成功!\n");
return true;
}