设计一个c++程序,假设一个算术表达式可以包含三种括号:“(”和“)”,方括号“[”和“]”,及花括号“ { ”和“ } ”,且这三种括号可嵌套使用。试设计算法判断给定表达式中所含括号是否配对出现。
时间: 2023-09-10 13:05:06 浏览: 70
好的,根据您的要求,我会为您设计一个简单的C++程序,用于判断表达式中的括号是否配对出现。具体实现如下:
```c++
#include<iostream>
#include<stack>
using namespace std;
bool check(string s) {
stack<char> st;
for(int i = 0; i < s.size(); i++) {
if(s[i] == '(' || s[i] == '[' || s[i] == '{') {
st.push(s[i]);
} else if(s[i] == ')') {
if(st.empty() || st.top() != '(') {
return false;
}
st.pop();
} else if(s[i] == ']') {
if(st.empty() || st.top() != '[') {
return false;
}
st.pop();
} else if(s[i] == '}') {
if(st.empty() || st.top() != '{') {
return false;
}
st.pop();
}
}
return st.empty();
}
int main() {
string s;
cin >> s;
if(check(s)) {
cout << "括号匹配" << endl;
} else {
cout << "括号不匹配" << endl;
}
return 0;
}
```
程序的主要思路是:遍历字符串中的每个字符,当遇到左括号时,将其入栈;当遇到右括号时,判断栈顶元素是否与之匹配,若匹配,则将栈顶元素出栈,否则返回false。最后,判断栈是否为空,若为空,则说明所有括号都已匹配,返回true,否则返回false。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![dsw](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)