#include<iostream> #include<stack> #include<map> #include<string> using namespace std; //习题5.1 堆栈的使用 /* 对于每组测试数据,第一行是一个正整数 n(0 < n <= 10000)。而后的 n 行,每行的第一个字符可能是'P'或者'O'或者'A'; 如果是'P',后面还会跟着一个整数,表示把这个数据压入堆栈;如果是'O',表示将栈顶的值 pop 出来, 如果堆栈中没有元素时,忽略本次操作;如果是'A',表示询问当前栈顶的值,如果当时栈为空,则输出'E'。堆栈开始为空。 */ int main() { int n; while (cin>> n) { stack<int> myStack; for (int i = 0; i < n; i++) { char s; cin >> s; //cout << "s:" << s << " " << endl; if (s == 'P') { int temp = 0; cin >> temp; myStack.push(temp); } else if (s == 'O') { if (!myStack.empty()) { myStack.pop(); } } else if (s == 'A'){ if (!myStack.empty()) { cout << myStack.top() << endl; } else { cout << "E" << endl; } } } } return 0; }