括号匹配
用栈实现括号匹配:依次扫描所有字符,遇到左括号入栈,遇到右括号则弹出栈顶元素检查是否匹配。
匹配失败的情况:
1.左括号单身;
2.右括号单身;
3.左右括号不匹配;
代码实现:
bool brackCheck( char str [] , int length){
SqStack S;
InitStack ( S ); //初始化一个栈
for ( int i = 0; i < length; i ++){
if ( str [ i ] == ' ( ' || str[ i ] == ' [ ' ||str[ i ] == ' { '){ //扫描到左括号,入栈
Push ( S, str [ i ]);
}else {
if ( StackEmpty ( S ) ) //扫描到右括号且当前栈空
return false; //匹配失败
char topElem;
Pop ( S ,topElem); //栈顶元素出栈
if ( str [ i ] == ' ) ' && topElem != '( ' ) //如果出栈元素与当前扫描到的元素不匹配
return false; //匹配失败
if ( str [ i ] == ' ] ' && topElem != ' [ ' )
return false;
if ( str [ i ] == ' } ' && topElem != ' { ' )
return false;
}
}
return StackEmpty ( S ); //检索完全部括号后,栈空说明匹配成功
}
浙公网安备 33010602011771号