设有两个栈s1和s2共享同一数组存储空间stack[m],请编写栈s1和s2的进栈操作push(i,x)和退栈操作pop(i), 其中i=1、2,分别表示栈s1和s2。要求:仅当整个空间stack[m]占满时才产生上溢。
void pushi(SqStack st,int i,int e)
{ // 入栈
if(st.top1==st.top2-1) printf(" 栈已满"); // 栈满时的条件
else if(i==1) {st.top1++; st.data[st.top1]=e;} // 入第一个栈
else if(i==2) {st.top2--; st.data[st.top2]=e;} // 入第二个栈
}
DataType popi(SqStack st,int i)
{ // 出栈
if(i==1)
if(st.top1==0) printf(" 栈1空");
else {x=st.data[top1]; st.top1--; return x; } // 栈1元素出栈
else if(i==2)
if(st.top2==M+1) printf(" 栈2空");
else {x=st.data[top2]; st.top2++; return x; } // 栈2元素出栈
}