利用stack:
#include <iostream>
#include <cstring>
#include <algorithm>
#include <stack>
using namespace std;
int main(){
int n;
stack<int> s;
while(cin>>n){
if(n==0)
break;
char c;
int t;
for(int i=0;i<n;i++){
cin>>c;
if(c=='P'){
cin>>t;
s.push(t);
}
else if(c=='O'){
if(!s.empty())
s.pop();
}
else if(c=='A'){
if(s.empty())
cout<<"E"<<endl;
else
cout<<s.top()<<endl;
}
}
cout<<endl;
}
return 0;
}
自己构建栈:
#include <iostream>
#include <cstring>
#include <algorithm>
#include <map>
using namespace std;
int main(){
int n;
int a[10001],p=-1;
while(cin>>n){
if(n==0)
break;
char c;
int t;
for(int i=0;i<n;i++){
cin>>c;
if(c=='P'){
cin>>a[++p];
}
else if(c=='O'){
if(p>=0)
p--;
}
else if(c=='A'){
if(p==-1)
cout<<"E"<<endl;
else
cout<<a[p]<<endl;
}
}
cout<<endl;
}
return 0;
}