括号配对问题代码
时间: 2023-12-10 15:38:52 浏览: 31
以下是一个简单的括号配对问题的代码,使用栈来实现:
```
#include <iostream>
#include <stack>
using namespace std;
bool isMatchingPair(char char1, char char2) {
if (char1 == '(' && char2 == ')')
return true;
else if (char1 == '{' && char2 == '}')
return true;
else if (char1 == '[' && char2 == ']')
return true;
else
return false;
}
bool isBalanced(string exp) {
stack<char> S;
for (int i = 0; i < exp.length(); i++) {
if (exp[i] == '(' || exp[i] == '{' || exp[i] == '[')
S.push(exp[i]);
else if (exp[i] == ')' || exp[i] == '}' || exp[i] == ']') {
if (S.empty() || !isMatchingPair(S.top(), exp[i]))
return false;
else
S.pop();
}
}
return S.empty();
}
int main() {
string expression;
cout << "Enter an expression: ";
cin >> expression;
if (isBalanced(expression))
cout << "The expression is balanced.";
else
cout << "The expression is not balanced.";
return 0;
}
```
该程序首先定义了一个 `isMatchingPair` 函数,用于判断括号是否匹配。然后定义了一个 `isBalanced` 函数,该函数使用一个栈来判断表达式中的括号是否匹配。最后,在 `main` 函数中读取用户输入并调用 `isBalanced` 函数来判断表达式是否平衡。