数据结构课程设计判别括号配对问题的栈实现
武汉理工大学,数据结构课设,判别括号配对——一个算术表达式含圆括号、中括号、花括号,并且它们可以任意嵌套使用。程序要求判断任一算术表达式中括号是否正确配对。
题目要求:
1. 表达式从键盘输入;
2. 使用栈来判断括号配对;
3. 自行设计测试用例。
思路解析:
1. 定义一个栈,遍历表达式中的每个字符;
2. 如果是左括号((、[、{),则入栈;
3. 如果是右括号()、]、}),则判断栈顶元素是否匹配对应的左括号;
4. 如果匹配,弹出栈顶元素;否则,表示括号配对错误;
5. 最后如果栈为空,则表示括号配对正确,否则表示有未匹配的左括号。
示例代码:
#include
#include
using namespace std;
bool isValid(string expr) {
stack s;
for (char c : expr) {
if (c == '(' || c == '[' || c == '{') {
s.push(c);
} else if (c == ')' || c == ']' || c == '}') {
if (s.empty()) return false;
char top = s.top();
s.pop();
if (c == ')' && top != '(') return false;
if (c == ']' && top != '[') return false;
if (c == '}' && top != '{') return false;
}
}
return s.empty();
}
int main() {
string expr;
cout << "请输入算术表达式:";
cin >> expr;
if (isValid(expr)) {
cout << "括号配对正确!" << endl>
测试用例:
1. a + (b * [c - {d / e}]) -> 正确配对;
2. a + (b * [c - {d / e]}) -> 错误配对。
该方法通过栈高效地解决了括号配对问题,且能应对复杂的嵌套情况。
90.5KB
文件大小:
评论区