一道关于顺序栈的笔试题:判断一个包含'('和')'的字符串是否有效

若有一个包括 '(' 和 ')' 的字符串string ,判断字符串是否有效。要求设计算法实现检查字符串是否有效,有效的字符串需满足以下条件:
A.左括号必须用相同类型的右括号闭合。
B.左括号必须以正确的顺序闭合。
C.每个右括号都有一个对应的相同类型的左括号。

思路图:

参考代码:

bool SeqStack_IsStringVaild(SeqStack_t *Manager, const char *Str)
{
	char *Pstr = Str; // 备份地址,防止地址丢失

	// 1.循环遍历字符串,寻找'('
	while (*Pstr)
	{
		// 判断当前地址下的字符是否为'(',如果是则入栈
		if (*Pstr == '(')
		{
			SeqStack_Push(Manager, '(');
		}
		if (*Pstr == ')')
		{
			// 判断空栈
			if (SeqStack_IsEmpty(Manager))
			{
				return false;
			}
			SeqStack_Pop(Manager);
		}
		Pstr++;
	}
	// 2.判断栈是否为空
	if (!SeqStack_IsEmpty(Manager))
	{
		return false;
	}
	return true;
}

热门相关:万妖帝主   勇闯天涯   明尊   傲天弃少   超级英雄