大家好,欢迎来到IT知识分享网。
描述
输入一个整数序列a1,a2,a3…,an。当ai不等于-1时将ai进栈;当ai=-1时,输出栈顶元素并将其出栈。
输入
多组数据,每组数据有两行,第一行为序列的长度n,第二行为n个整数,整数之间用空格分隔。当n=0时输入结束。
输出
对于每一组数据输出若干行。每行为相应的出栈元素。当出栈异常时,输出“POP ERROR”并结束本组数据的输出。
输入样例 1
5 1 2 -1 -1 1 5 1 -1 -1 2 2 0
输出样例 1
2 1 1 POP ERROR
最基本的常规栈操作,没啥可说的
#include<iostream> using namespace std; #define MAXSIZE 1000 #define OK 1 #define ERROR -1 typedef struct{ int *base; int *top; int stacksize; }SqStack; int InitStack(SqStack &S){ S.base=new int[MAXSIZE]; if(!S.base) return -2; S.top=S.base; S.stacksize=MAXSIZE; return OK; } int Push(SqStack &S,int e){ if(S.top-S.base==S.stacksize) return ERROR; *S.top++=e; return OK; } int Pop(SqStack &S){ if(S.top==S.base) return ERROR; S.top--; return OK; } int GetTop(SqStack &S){ if(S.top!=S.base) return *(S.top-1); } int main(){ while(1){ int n; cin>>n; SqStack S; if(n==0) return 0; InitStack(S); int a[MAXSIZE]; for(int i=0;i<n;i++) cin>>a[i]; for(int i=0;i<n;i++){ if(a[i]!=-1) Push(S,a[i]); else{ if(S.top!=S.base){ cout<<GetTop(S)<<endl; Pop(S); } else{ cout<<"POP ERROR"<<endl; break; } } } } }
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/32284.html