在c++中,利用栈的运算编写判断给定表达式中所含括号是否正确配对出现的代码。
时间: 2024-10-22 11:22:02 浏览: 32
在 C++ 中,我们可以使用栈的数据结构来检查给定的数学表达式中的括号是否正确配对。栈是一种后进先出(LIFO)的数据结构,非常适合处理这种需要回溯的问题。以下是基本的步骤:
1. 定义两个栈,一个用于存储左括号 ('('),另一个用于存储右括号 (')')。
2. 遍历输入字符串中的每个字符,对于每个字符执行以下操作:
- 如果遇到左括号,将其压入左括号栈。
- 如果遇到右括号,检查左括号栈是否为空。如果不空,弹出最近的一个左括号并与当前右括号匹配。如果它们不匹配(例如 '()'),则表达式的括号配对错误。
- 如果遍历完所有字符且左右括号栈都为空,则表示括号配对正确。
以下是一个简单的示例代码:
```cpp
#include <iostream>
#include <stack>
using namespace std;
bool isValid(string s) {
stack<char> leftBrackets;
for (char c : s) {
if (c == '(') {
leftBrackets.push(c);
} else if (c == ')') {
if (leftBrackets.empty()) {
return false; // No matching open bracket found
}
leftBrackets.pop(); // Pop the last opened bracket
}
}
return leftBrackets.empty(); // If all brackets have been matched, leftBrackets should be empty
}
int main() {
string expression = "((()))";
cout << (isValid(expression) ? "括号配对正确" : "括号配对错误") << endl;
return 0;
}
```
阅读全文