问答题 已知有一整数序列{a1,a2,a3,…,an}。栈A中只保存整数,即序列中元素为整数时允许其入栈。设计一个算法实现如下功能:用栈结构存储入栈的整数,当ai≠-1时,将ai进栈;当ai=-1时,输出栈项整数并出栈。
【正确答案】#define maxsize //栈空间容量 void InOutS(int s[maxsize]){ int top=0; //top为栈顶指针,定义top=0时为栈空 for(i=1; i<=n; i++){ //n个整数序列作处理 scanf("%d",&x); //从输入整数序列 if(x !=-1) //读入的整数不等于-1时入栈 if(top == maxsize-1){ printf("栈满/n"); exit(0); } else s[++top] =x; //x入栈 else{ //读入的整数等于-1时退栈 if(top == 0){ printf("栈空/n"); exit(0); } else printf("出栈元素是%d/n", s[top--]); } } }
【答案解析】