bool isValid(char* s) {
ST st;
StackInit(&st);
while(*s)
{
//左括号入栈
if(*s=='('||*s=='['||*s=='{')
{
StackPush(&st,*s);
}
else//右括号取栈顶左括号尝试匹配
{
if(StackEmpty(&st))
{
StackDistory(&st);
return false;
}
char top=StackTop(&st);
StackPop(&st);
//不匹配
if((top=='('&&*s!=')')
||(top=='{'&&*s!='}')
||(top=='['&&*s!=']'))
{
StackDistory(&st);
return false;
}
}
++s;
}
//栈不为空,说明左括号比右括号多,数量不匹配
bool ret=StackEmpty(&st);
StackDistory(&st);
return ret;
}