#include #include #include #include "stack.hpp" int main() { Stack stack; int op = 0; while (1) { op = 0; printf("选择操作:1入栈2出栈3深度4是否空5栈顶6退出\n"); scanf("%d", &op); switch (op) { case 1: printf("输入\n"); scanf("%d", &op); stack.push(op); break; case 2: printf("出%d \n", stack.pop()); break; case 3: printf("深度%d \n", stack.depth()); break; case 4: printf("%d \n", stack.empty()); break; case 5: printf("%d \n", stack.top()); break; case 6: goto Out; default: break; } } Out: Stack S; std::string exp; bool flag = true; printf("输入算式\n"); std::cin >> exp; for (int i = 0; i < sizeof(exp); i++) { switch (exp[i]) { case '(': case '[': case '{': S.push(exp[i]); break; case ')': '(' != S.pop() ? flag = false : 0; break; case ']': '[' != S.pop() ? flag = false : 0; break; case '}': '{' != S.pop() ? flag = false : 0; break; default: break; } } (flag==true&&S.empty()) ? printf("匹配成功\n") : printf("匹配失败\n"); }