首页 > 试题广场 >

设有两个栈s1和s2共享同一数组存储空间stack[m],请

[问答题]

设有两个栈s1s2共享同一数组存储空间stackm],请编写栈s1s2的进栈操作push(i,x)和退栈操作pop(i), 其中i=12,分别表示栈s1s2。要求:仅当整个空间stackm]占满时才产生上溢。

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元素出栈

}

发表于 2017-05-17 11:07:46 回复(0)