思路:
bool isValid(char *s)
{
ST st;
StackInit(&st);
while(*s)
{
if(*s=='('
||*s=='{'
||*s=='[')
{
StackPush(&st,*s);
++s;
}
else
{
//遇到右括号,但是栈里面没有数据,说明
//前面没有左括号,不匹配,返回false
if(StackEmpty(&st))
{
return false;
}
STDataType top=StackTop(&st);
StackPop(&st);
if((*s=='}'&&top !='{')
||(*s==']'&&top !='[')
||(*s==')'&&top !='('))
{
StackDestroy(&st);
return false;
}
else
{
++s;
}
}
}
//如果栈不是空,说明栈中还有左括号未出
//没有匹配,返回是false
bool ret=StackEmpty(&st);
StackDestroy(&st);
return ret;
}