用c++实现用栈实现:输入一行符号,以#结束,判断其中的括号是否匹配。括号包括: {} [] () <>
时间: 2024-02-25 18:55:02 浏览: 38
用栈判断括号是否匹配
好的,以下是使用C++实现括号匹配的示例代码:
```c++
#include <iostream>
#include <stack>
#include <string>
using namespace std;
bool is_matching(string symbols) {
stack<char> s;
for (char symbol : symbols) {
if (symbol == '{' || symbol == '[' || symbol == '(' || symbol == '<') {
s.push(symbol);
} else if (symbol == '}' || symbol == ']' || symbol == ')' || symbol == '>') {
if (s.empty()) {
return false;
}
char top_symbol = s.top();
s.pop();
if ((top_symbol == '{' && symbol != '}') ||
(top_symbol == '[' && symbol != ']') ||
(top_symbol == '(' && symbol != ')') ||
(top_symbol == '<' && symbol != '>')) {
return false;
}
}
}
return s.empty();
}
int main() {
string symbols;
cout << "请输入一行符号:";
getline(cin, symbols, '#');
if (is_matching(symbols)) {
cout << "括号匹配" << endl;
} else {
cout << "括号不匹配" << endl;
}
return 0;
}
```
该程序使用了标准库中的`stack`数据结构来实现栈。对于遍历到的符号,如果是左括号,就将其入栈;如果是右括号,则判断与栈顶元素是否匹配,匹配则出栈,不匹配则返回`false`。最后如果栈为空,则表示所有括号都匹配。
阅读全文