有效的括号(C)

有效的括号(C)_第1张图片

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;
}

你可能感兴趣的:(深度学习数据结构,c语言,数据库,javascript)