#include<iostream> #include<string> using namespace std; struct Node { char ch; Node* next; Node(char c, Node* p){ ch = c; next = p; } }; void main() { string str; bool flag = true; while (flag) { cout << "请输入算术表达式:" << endl; getline(cin, str); int len = str.length(); Node* top = NULL; int i; for (i = 0; i < len; i++) { if (str[i] == '(' || str[i] == '[' || str[i] == '{') { top = new Node(str[i], top); } if (str[i] == ')' || str[i] == ']' || str[i] == '}') { if (top == NULL){ cout << "1.括号不匹配!" << endl; break; } else { Node* pt = top; top = top->next; pt->next = NULL; char item = pt->ch; delete pt; if ((item == '('&&str[i] != ')') || (item == '['&&str[i] != ']') || (item == '{'&&str[i] != '}')) { cout << "2.括号不匹配!" << endl; break; } } } } if (i == len) { if (top){ cout << "3.括号不匹配!" << endl; } else cout << "括号完全匹配!" << endl; } if (top) { Node* ptr; while (top) { ptr = top->next; delete top; top = ptr; } } cout << "是否继续?继续请按1,退出请按0:" << endl; int choice; cin >> choice; getchar(); if (choice == 0)flag = false; } } 代码已经过测试,在VS2013上成功运行! 发此文有两大目的: 1.和大家交流经验,供需要的人参考。 2.在下菜鸟,代码中难免有不妥之处,恳求大神批评指正。您的批评就是在下提高的起点,对于您的批评,在下将不胜感激!