问答题 设从键盘输入一整数的序列:a1,a2,a3,…,an,试编写算法实现:用栈结构存储输入的整数,当ai≠-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈。算法应对异常情况(入栈满等)给出相应的信息。

【正确答案】#define maxsize栈空间容量
void InOutS(int s [maxsize])
∥s是元素为整数的栈,本算法进行入栈和退栈操作
{int top=0; ∥top为栈顶指针,定义top=0时为栈空
for(i=1;i<=n;i++) ∥n个整数序列作处理
{scan{(“%d”,&x); ∥从键盘读入整数序列
if(x!=-1) ∥读入的整数不等于-1时入栈
if(top==maxsize-1) {printf(“栈满×/n”);exit(0);}else s[++
top]=x;∥x入栈
else ∥读入的整数等于-1时退栈
(if(top==0){print{(“栈空/n”);exit(0);)else print{(“出栈元素是%
d/n”,s[top——]);)}
}
【答案解析】