数据结构-顺序栈笔试题2

设计思路:
1.遍历,遇到左括号则入栈,若栈满则return
2.继续遍历,遇到右括号则出栈一个左括号,若出栈之前栈为空,则字符串无效
3.遍历完成,若栈空则字符串有效

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

bool Str_JudgeIsValid(SeqStack_t *Manager){
	char str[100];
	printf("string=");
	scanf("%s",&str);
	int i=0;
	while(str[i]!='\0'){
		if(str[i]=='('){
			if (Manager->Top + 1 == Manager->Size) return false;//stack is full
			Manager->Bottom[++Manager->Top]=str[i];//push
		}  
		else if(str[i]==')') {
			if (-1==Manager->Top ) return false; // Invalid string if trying to pop from an empty stack
			Manager->Top--;//pop
		}
		i++;
	}
	return (-1 == Manager->Top) ? true : false;
}

posted @ 2025-04-16 13:33  w1888  阅读(23)  评论(0)    收藏  举报