#include <stdio.h> #include <stdlib.h> #include <string.h> struct SNode { int Data[100000]; int Top; }; typedef struct SNode* stack ; void PUSH(stack ptrs, int item) { ptrs->Data[++(ptrs->Top)] = item; return; } int POP(stack ptrs) { if (ptrs->Top == -1) { return -1; } else { return (ptrs->Data[(ptrs->Top)--]); } } int top(stack ptrs) { if (ptrs->Top == -1) { return -1; } else { return ptrs->Data[ptrs->Top]; } } int main() { stack ptrs = (stack)malloc(sizeof(struct SNode)); ptrs->Top = -1; int n; scanf("%d", &n); char operation[5]; int value; while (n--) { scanf("%s", operation); if (strcmp(operation, "push") == 0) { scanf("%d", &value); PUSH(ptrs, value); } else if (strcmp(operation, "pop") == 0) { int guodu = -1; int popvalue=POP(ptrs); if (guodu == popvalue) { printf("error\n"); } else { printf("%d\n", popvalue); } } else if (strcmp(operation, "top") == 0) { int guodu = -1; if (guodu == top(ptrs)) { printf("error\n"); } else { printf("%d\n", top(ptrs)); } } } free(ptrs); }