括号匹配问题源代码C语言.docx
- 文档编号:238246
- 上传时间:2022-10-07
- 格式:DOCX
- 页数:4
- 大小:25.04KB
括号匹配问题源代码C语言.docx
《括号匹配问题源代码C语言.docx》由会员分享,可在线阅读,更多相关《括号匹配问题源代码C语言.docx(4页珍藏版)》请在冰豆网上搜索。
括号匹配问题就是给定任意判别式,然后检验括号的配对出现的情况。
可见输入的表达式有四种可能性:
右括号配对次序不正确、右括号多于左括号、左括号多于右括号、左右括号匹配正确。
可以先检测表达式中的字符,若是左括号就入栈,如果是右括号就出栈一个元素与其配对,配对成功则继续访问下一个字符,否则退出。
出现非括号字符则跳过。
程序流程图如下:
当遇)]}出栈
检测字符并压入([{
输入一个表达式
判断括号是否匹配并输出结果
程序代码如下:
#include
#include
#include
#include
#defineMaxSize50
usingnamespacestd;
/*------------主要的数据结构类型--------------*/
structText
{
inttop;
charSzstack[MaxSize];
};
/*-------------程序功能模块函数-------------*/
//检验栈是否为空
boolIsEmpty(TextG)
{
if(G.top==-1)
returntrue;
else
returnfalse;
}
//检验栈是否为满
boolIsFull(TextG)
{
if(G.top==MaxSize-1)
returntrue;
else
returnfalse;
}
//弹出栈顶元素
charPop(TextG)
{
charn=G.Szstack[G.top];
returnn;
}
//检验括号是否配对
intCheck(char*A)
{
inti;
TextG;
G.top=-1;
intL=strlen(A);
charc;
for(i=0;i { c=A[i]; switch(c) { case'(': G.Szstack[++(G.top)]=c; cout<<"压入(top="< break; case'[': G.Szstack[++(G.top)]=c; cout<<"压入[top="< break; case'{': G.Szstack[++(G.top)]=c; cout<<"压入{top="< break; case')': if(Pop(G)! ='(') { return0; } else { G.Szstack[G.top--]; cout<<"当遇)出栈(top="< break; } case']': if(Pop(G)! ='[') return0; else { G.Szstack[G.top--]; cout<<"当遇]出栈[top="< break; } case'}': if(Pop(G)! ='{') return0; else { G.Szstack[G.top--]; cout<<"当遇}出栈{top="< break; } default: break; } } if(! IsEmpty(G)) return0; return1; } /*-------------主函数-------------*/ intmain() { system("color75");//设置颜色以美观 TextG; charA[MaxSize]; cout<<"请输入需要检验的括号(括号数小于50): "< cin>>A; if(Check(A)==1) { cout<<"-----括号匹配-----"< } else { cout< } return0; } 以下分别是括号匹配与不匹配时的程序运行结果图:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 括号 匹配 问题 源代码 语言