数据结构-顺序栈笔试题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;
}

浙公网安备 33010602011771号