#include
#include
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;
}
}文章来源: