【数据结构及算法】3.括号匹配的检验 1 Status MatchCheck(SqList exp) 2 /* 顺序表exp表示表达式; */ 3 /* 若exp中的括号配对,则返回TRUE,否则返回FALSE */ 4 { 5 Stack s; 6 char e; 7 8 //逐个读入括号 9 for(int i=0;i<exp.length;i++) 10 { 11 if(exp.elem[i]=='(‘||exp.elem[i]=='{‘||exp.elem[i]=='[‘)//若遇左括号,则直接入栈 12 { 13 Push(s,exp.elem[i]); 14 } 15 else if(exp.elem[i]==’)’)//若遇右圆括号,则尝试匹配栈顶括号 16 { 17 if(GetTop(s,e)) 18 { 19 if(e=='(‘)//匹配成功,左圆括号出栈 20 { 21 Pop(s,e); 22 } 23 else//匹配不成功,右圆括号入栈 24 { 25 Push(s,exp.elem[i]); 26 } 27 } 28 else//栈为空,则将右括号入栈 29 { 30 Push(s,exp.elem[i]); 31 } 32 } 33 else if(exp.elem[i]==’}’)//若遇右花括号,则尝试匹配栈顶括号 34 { 35 if(GetTop(s,e)) 36 { 37 if(e=='{‘)//匹配成功,左花括号出栈 38 { 39 Pop(s,e); 40 } 41 else//匹配不成功,右花括号入栈 42 { 43 Push(s,exp.elem[i]); 44 } 45 } 46 else 47 { 48 Push(s,exp.elem[i]); 49 } 50 } 51 else if(exp.elem[i]==’]’)//若遇右方括号,则尝试匹配栈顶括号 52 { 53 if(GetTop(s,e)) 54 { 55 if(e=='[‘)//匹配成功,左方括号出栈 56 { 57 Pop(s,e); 58 } 59 else//匹配不成功,右方括号入栈 60 { 61 Push(s,exp.elem[i]); 62 } 63 } 64 else 65 { 66 Push(s,exp.elem[i]); 67 } 68 } 69 } 70 if(StackEmpty(s))//当所有括号匹配成功时,栈应为空 71 { 72 return TRUE; 73 } 74 else 75 { 76 return FALSE; 77 } 78 }
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/26312.html