bool isValid(char* s)
{
ST st;
StackInit(&st);
while (*s) //遍历 -- 与\0终止
{
//是左括号 压栈
if (*s == '(' || *s == '[' *s == '{')
{
StackPush(&st, *s);
++s;
}
else
{
//应对样例: ’]'
if (StackEmpty(&st))
{
StackDestroy(&st);
return false;
}
//不是左括号 应该就是右括号
//取栈顶(取的是先前压栈的左括号)
//取完即Pop -- 匹配完就Pop
STDataType top = StackTop(&st);
StackPop(&st);
if ((top == '{' && *s == '}')
|| (top == '[' && *s == ']')
|| (top == '(' && *s == ')'))
{
++s;
}
else
{
stackDestroy(&st);
return false;
}
}
}
bool ret = StackEmpty(&st);
StackDestroy(&st);
//栈不为空 还有数据未匹配 返回假
return ret;
}