3.3 设有一维数组stack[StackMaxSize],将其分配给两个栈S1和S2使用。试问如何分配数组空间,使得对任何一个栈,当且仅当数组空间全满时才不能插入?试给出两个栈的出栈入栈算法。
#include<iostream>
#define MaxSize 3
using namespace std;
struct Stack
{
int top1,top2;
int a[MaxSize];
};
int main()
{
int n;//n为控制输入的栈
Stack *s=new Stack;
s->top1=0; s->top2=MaxSize-s->top1-1;
while(cin>>n){
if(n==1){//s1入栈
s->a[s->top1]=1;
s->top1++;
}
else if(n==2){//s2入栈
s->a[s->top2]=2;
s->top2--;
}
else if(n==3){//s1出栈
s->a[s->top1]=0;
s->top1--;
}
else if(n==4){//s2出栈
s->a[s->top2]=0;
s->top2++;
}
if(s->top1-1==s->top2){
cout<<"数组空间已满,不能继续插入数据"<<endl;
break;
}
}
for(int i=0;i<MaxSize;i++) cout<<s->a[i]<<" ";
return 0;
}