设算术表达式由字符串b表示,其中可以包括三种括号:圆括号、方括号以及花括号,嵌套的顺序随意,如:“{[( )]( )}”。试编写算法,实现判定给定表达式中所含括号是否正确配对的出现。

admin2012-06-21  46

问题 设算术表达式由字符串b表示,其中可以包括三种括号:圆括号、方括号以及花括号,嵌套的顺序随意,如:“{[(  )](  )}”。试编写算法,实现判定给定表达式中所含括号是否正确配对的出现。

选项

答案设tag为括号是否正确配对的标志,用0表示不正确的配对,1表示正确的配对。另设一个栈S。若当前处理字符为左括号,就将对应的右括号进栈。当遇到右括号时,直接与栈顶元素进行比较,若相等,则退栈;否则返回不正确配对标志。当整个算术表达式检测完毕且栈为空时,表示括号正确配对,否则括号不正确配对。算法描述如下: #deftne MAX 1000 int JudgeExp(char*b) { char S[MAX]; int i,top=0,tag=1; for(i=0;tag&&b[i]!=’\0’;i++) { switch(b[i]) { case’(’:S[top++]=)’;break; case’[’:S[top++]=’]’;break; case’{’:S[top++]=’}’;break; case’)’: case’]’: case’}’: if(top==0||b[i]!=S[--top]) tag=0; break; } } return top==0&&tag&&b[i]==’\0’; }

解析
转载请注明原文地址:https://kaotiyun.com/show/58xi777K
0

最新回复(0)