《括号匹配问题源代码.docx》由会员分享,可在线阅读,更多相关《括号匹配问题源代码.docx(4页珍藏版)》请在三一办公上搜索。
1、括号匹配问题源代码括号匹配问题就是给定任意判别式,然后检验括号的配对出现的情况。 可见输入的表达式有四种可能性:右括号配对次序不正确、右括号多于左括号、左括号多于右括号、左右括号匹配正确。可以先检测表达式中的字符,若是左括号就入栈,如果是右括号就出栈一个元素与其配对,配对成功则继续访问下一个字符,否则退出。出现非括号字符则跳过。程序流程图如下: 输入一个表达式 检测字符并压入( 当遇) 出栈 判断括号是否匹配并输出结果 程序代码如下: #include #include #include #include #define MaxSize 50 using namespace std; /*-主
2、要的数据结构类型 -*/ struct Text int top; char SzstackMaxSize; ; /*-程序功能模块函数-*/ /检验栈是否为空 bool IsEmpty(Text G) if(G.top=-1) return true; else return false; /检验栈是否为满 bool IsFull(Text G) if(G.top=MaxSize-1) return true; else return false; /弹出栈顶元素 char Pop(Text G) char n=G.SzstackG.top; return n; /检验括号是否配对 int
3、Check(char *A) int i; Text G; G.top=-1; int L=strlen(A); char c; for(i=0;iL;i+) c=Ai; switch(c) case(: G.Szstack+(G.top)=c; cout 压入 ( top=G.topendl; break; case: G.Szstack+(G.top)=c; cout 压入 top=G.topendl; break; case: G.Szstack+(G.top)=c; cout 压入 top=G.topendl; break; case): if(Pop(G)!=() return 0;
4、 else G.SzstackG.top-; cout 当遇 ) 出栈 ( top=G.topendl; break; case: if(Pop(G)!=) return 0; else G.SzstackG.top-; cout 当遇 出栈 top=G.topendl; break; case: if(Pop(G)!=) return 0; else G.SzstackG.top-; cout 当遇 出栈 top=G.topendl; break; default:break; if(!IsEmpty(G) return 0; return 1; /*-主函数-*/ int main system(color 75); /设置颜色以美观 Text G; char AMaxSize; cout请输入需要检验的括号(括号数小于50):A; if(Check(A)=1) cout -括号匹配-endl; else coutendlendl -括号不匹配-endlendlendl; return 0; 以下分别是括号匹配与不匹配时的程序运行结果图: