bool BracketsCheck(string str) {
InitStack(S);
int i = 0; // 循环变量
char e; // 获取出栈元素
while (str[i] != '\0') {
switch(str[i]) {
case '(':
Push(S, '(');
break; // 在switch中,break只能终止距离最近的switch,而不是外面的循环
case '[':
Push(S, '[');
break;
case '{':
Push(S, '{');
break;
case ')':
// if (Pop(S,e) && e == '(')
if (!Pop(S, e) || e != '(') { // 如果栈空 或者 栈非空但是括号不匹配
cout << "括号不匹配!\n";
return false;
}
break;
case ']':
if (!Pop(S, e) || e != '[') {
cout << "括号不匹配!\n";
return false;
}
break;
case '}':
if (!Pop(S, e) || e != '{') {
cout << "括号不匹配!\n";
return false;
}
break;
default:
break;
}
i++;
}
if (!StackEmpty(S)) { // 如果栈非空
cout << "括号不匹配!\n";
return false;
}
else {
cout << "括号匹配!\n";
return true;
}
}
括号的匹配---栈
最新推荐文章于 2024-05-21 20:29:42 发布