问答题 设从键盘输入一整数的序列:al,a2,a3,…,an,试编写算法实现:用栈结构存储输入的整数,当ai≠一1时,将ai进栈;当ai=一1时,输出栈顶整数并出栈。算法应对异常情况(入栈满等)给出相应的信息。【南京航空航天大学1998年】
【正确答案】正确答案:算法的基本设计思想:依次输入每个整数,然后判断是否是一1,如果是,则弹栈;不是,则入栈。算法的代码: void InOutS(int s[maxsize]) { //s是元素为整数的栈,本算法进行入栈和退栈操作 int top=0; //top为栈顶指针,定义top=0时为栈空 for(int i=l;i<=n;i++) //n个整数序列作处理 { scanf(”%d”,&x); //从键盘读入整数序列 if(x f=-1) //读入的整数不等于一l时入栈 { if(top==maxsize一1) { printf(“栈满\n”); exit(1); } else s[++top]=x; //x入栈 } else //读入的整数等于一1时退栈 { if(top==0) { printf(”栈空\n”); exit(1), } else printf(“出栈元素是%d\n”,s[top一一]); } } }//InOutS
【答案解析】