课程设计报告——括号匹配问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告——括号匹配问题
————————————————————————————————作者:————————————————————————————————日期:
ﻩ
1. 设计目的
1、能根据实际问题的具体情况,结合数据结构课程中的基本理论和基本算法,分析并正确确定数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法。
2、提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法的正确性。学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。
3、初步掌握软件开发过程中问题分析、系统设计、程序编码、测试等基本方法和技能。
4、训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
5、培养根据选题需要选择学习书籍,查阅文献资料的自学能力。
2.设计内容
2.1 系统名称
括号匹配问题:括号匹配问题就是给定任意判别式,然后检验括号的配对出现的情况。
2.2要求
假设一个算术表达式中可包含三种括号:圆括号、中括号、花括号且这三种括号可按任意次序嵌套使用。试利用栈的运算,编写判别给定式中所含括号是否正确配对出现的算法。
任意运用一种计算机语言,分析问题,写出具体程序,要求能够在对应的系统中实现该问题的,实验通过计算机来完成。
独立完成,可通过查阅资料来解决自己不会的问题,提高自己查阅文献的能力级独立思考的能力。
3.程序设计步骤
3.1 程序流程分析图
图3-1 程序流程图
3.2 主要的数据结构类型
typed ef st ruc t
{
ﻩ int top;
ch ar S zstack[Max Siz e];
}Text; 开
给定判断
检验
左
右入
找栈
配对删除
不配对,则栈空栈
不结
3.3 程序功能模块函数
(1)检验栈是否为空
boolIsEmpty(TextG)
{
ﻩif(G.top==-1)
ﻩﻩreturntrue;
else
ﻩﻩreturn false;
}
(2) 检验栈是否为满
bool IsFull(Text G)
{
ﻩif(G.top==MaxSize-1)
ﻩﻩreturn true;
else
ﻩreturnfalse;
}
(3) 弹出栈顶元素
charPop(Text G)
{
ﻩchar n=G.Szstack[G.top];
ﻩreturn n;
}
(4)检验括号是否配对
int Check(char *A)
{
ﻩint i;
Text G;
ﻩG.top=-1;
ﻩintL=strlen(A);
ﻩcharc;
ﻩfor(i=0;i<L;i++)
{
ﻩﻩc=A[i];
switch(c)
{
ﻩcase'(':
ﻩﻩﻩﻩG.Szstack[++(G.top)]=c;
ﻩﻩprintf(" 压入(top=%d \n\n",G.top);
ﻩﻩbreak;
case'[':
ﻩﻩG.Szstack[++(G.top)]=c;
ﻩﻩprintf("压入[top=%d \n\n",G.top);
ﻩﻩbreak;
ﻩcase'{':
ﻩG.Szstack[++(G.top)]=c;
ﻩﻩﻩprintf(" 压入{ top=%d \n\n",G.top);
ﻩbreak;
ﻩcase')':
ﻩﻩﻩif(Pop(G)!='(')
ﻩﻩ{
ﻩreturn0;
ﻩﻩﻩ}
ﻩelse
ﻩ{
ﻩG.Szstack[G.top--];
ﻩﻩprintf(" 当遇)出栈( top=%d\n\n",G.top);
ﻩﻩbreak;
ﻩ}
case']':
if(Pop(G)!='[')
return0;
ﻩﻩﻩelse
ﻩﻩﻩ{
ﻩﻩﻩG.Szstack[G.top--];
printf(" 当遇] 出栈[ top=%d\n\n",G.top);
ﻩﻩﻩbreak;
ﻩﻩﻩﻩ}
case'}':
ﻩﻩif(Pop(G)!='{')
ﻩreturn 0;
ﻩﻩﻩelse
ﻩ{
ﻩﻩﻩG.Szstack[G.top--];
ﻩﻩprintf(" 当遇} 出栈{ top=%d\n\n",G.top);
ﻩbreak;
}
ﻩdefault:break;
ﻩ}
}
if(!IsEmpty(G))
ﻩreturn 0;ﻩ
return 1;
}
3.4程序实现中函数之间的调用
先进行函数声明,在定义函数,再在功能函数及主函数中调用函数,实现检验括号匹配的问题。
主函数:
intmain()
{
TextG;
system("color1f");
ﻩchar A[MaxSize];
printf("请输入需要检验的括号:\n\n");
ﻩscanf("%s",A);
ﻩif(Check(A)==1)
ﻩ{
ﻩprintf("-----括号匹配-----\n\n\n");
ﻩ}