课程设计报告——括号匹配问题

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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");

ﻩ}

相关文档
最新文档