题解 | #堆栈的使用#
堆栈的使用
https://www.nowcoder.com/practice/e91982a145944ceab6bb9a4a508e0e26
#include <stack> #include <map> #include <string> #include <iostream> using namespace std; // 对于每组测试数据,第一行是一个正整数 n(0 < n <= 10000)。 // 而后的 n 行,每行的第一个字符可能是'P'或者'O'或者'A'; // 如果是'P',后面还会跟着一个整数,表示把这个数据压入堆栈; // 如果是'O',表示将栈顶的值 pop 出来,如果堆栈中没有元素时,忽略本次操作; // 如果是'A',表示询问当前栈顶的值,如果当时栈为空,则输出'E'。堆栈开始为空。 int main() { int n; char op; int num; while (scanf("%d", &n) != EOF) { stack<int> stack; while (n--) { cin >> op; switch (op) { case 'P': cin >> num; stack.push(num); break; case 'O': if (!stack.empty()) { stack.pop(); } break; case 'A': if (stack.empty()) { cout << 'E' << endl; } else { cout << stack.top() << endl; } break; default: break; } } } }