/************1234如栈出栈3241返回0错误3124返回-1**********/#include<iostream>#include<stack>#include<string.h>usingnamespacestd;booljudge(constchar*push_seq,constchar*pop_seq){if(NULL==push_seq||NULL==pop_seq){returnfalse;}if(strlen(push_seq)!=strlen(pop_seq)){returnfalse;}stack<char>sc;while(*push_seq){if(0==sc.size()||sc.top()!=*pop_seq){sc.push(*push_seq++);//}else{sc.pop();++pop_seq;//}}while(sc.size()){if(sc.top()!=*pop_seq++){returnfalse;}sc.pop();}returntrue;}intmycheck1(inta[],intn){stack<int>s;inti,j,k=1;//3241for(i=0;i<n;i++){if(a[i]>k){for(j=k;j<a[i];j++)s.push(j);k=j+1;cout<<k<<endl;continue;}if(a[i]==s.top()){s.pop();continue;}if(a[i]<s.top())return-1;}cout<<endl;return0;}intmycheck(inta[],intn){stack<int>s;s.push(0);inti,j,k=1;//BUG段经过分析在于s.top段因为没有元素时这样做有越界的含义for(i=0;i<n;i++){if(a[i]>k){for(j=k;j<a[i];j++)s.push(j);k=j+1;cout<<k<<endl;continue;}if(a[i]==s.top()){s.pop();continue;}if(a[i]<s.top())return-1;}cout<<endl;return0;}intmain(){//cout<<judge("1234","3241")<<endl;//inta[]={1,2,3,4};inta[]={3,2,4,1};//inta[]={4,3,2,1};okcout<<mycheck(a,4);return0;}