算法的基本思想:扫描每一个字符,遇到花、中、圆括号的左括号时进栈,遇到相应的右括号时检查栈顶元素是否为相应的左括号,若是则出栈,否则匹配失败。
bool check(char *str){
InitStack(S);
int i = 0;
while(str[i] != '\0'){
switch(str[i]){
case '(':Push(S,'(');break;
case '[':Push(S,'[');break;
case '{':Push(S,'{');break;
case ')':Pop(S,x);
if(x != '(') return false;
break;
case ']':Pop(S,x);
if(x != '[') return false;
break;
case '}':Pop(S,x);
if(x != '{') return false;
break;
default:break;
}
}
if(!IsEmpty(S)){
printf("栈中还有未配对的括号");
return false;
}else{
printf("括号配对成功");
return true;
}
}