c++怎么验证出栈是否合法?
时间: 2023-07-23 10:40:47 浏览: 105
在 C++ 中,可以使用栈模拟程序执行的过程,验证括号匹配是否合法。具体实现可以使用一个栈来存储左括号,每当遇到右括号时,弹出栈顶的左括号并判断是否匹配。如果匹配,则继续执行;否则,说明括号不合法,程序终止。
以下是一个简单的 C++ 代码示例:
```c++
#include <iostream>
#include <stack>
#include <string>
using namespace std;
bool isValid(string s) {
stack<char> st;
for (char c : s) {
if (c == '(' || c == '[' || c == '{') {
st.push(c);
} else {
if (st.empty()) {
return false;
} else if (c == ')' && st.top() != '(') {
return false;
} else if (c == ']' && st.top() != '[') {
return false;
} else if (c == '}' && st.top() != '{') {
return false;
} else {
st.pop();
}
}
}
return st.empty();
}
int main() {
string s;
cout << "请输入一个字符串:" << endl;
cin >> s;
if (isValid(s)) {
cout << "括号匹配合法!" << endl;
} else {
cout << "括号匹配不合法!" << endl;
}
return 0;
}
```
该程序可以验证输入的字符串中的括号是否合法,如果合法则输出“括号匹配合法!”;否则,输出“括号匹配不合法!”。
阅读全文