括号匹配问题Word格式.docx

上传人:b****6 文档编号:20414934 上传时间:2023-01-22 格式:DOCX 页数:9 大小:51.07KB
下载 相关 举报
括号匹配问题Word格式.docx_第1页
第1页 / 共9页
括号匹配问题Word格式.docx_第2页
第2页 / 共9页
括号匹配问题Word格式.docx_第3页
第3页 / 共9页
括号匹配问题Word格式.docx_第4页
第4页 / 共9页
括号匹配问题Word格式.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

括号匹配问题Word格式.docx

《括号匹配问题Word格式.docx》由会员分享,可在线阅读,更多相关《括号匹配问题Word格式.docx(9页珍藏版)》请在冰豆网上搜索。

括号匹配问题Word格式.docx

实现本程序需要解决:

①用什么数据结构;

②怎样实现判断括号是否匹配;

③括号匹配与否有几种情况;

④输出与输入数据的形式。

本程序的难点在于怎么判断括号是否匹配。

2.概要设计

2-1模块一:

初始化一个堆栈

堆栈的顺序存储结构可以利用一个具有M个元素的数组STACK[0..M-1]来描述。

其中,STACK作为堆栈的名字,且不妨设:

#defineM100*/定义堆栈的最大容量,并初始化栈顶指针变量top=-1。

2-2模块二:

进栈

在容量为M的堆栈中插入一个新的元素E[i],栈顶元素的位置由top指出。

新的数据元素进栈,将栈顶指针加1,然后将新的数据元素E[i]插入到修改以后的top指出的新的栈顶位置上。

2-3模块三:

测试堆栈是否为空

测试堆栈是的栈顶指针top是否为-1。

2-4模块四:

退栈

从堆栈中退出当前栈顶元素,并保存在变量item中,同时将栈顶指针减1修改栈顶指针位置。

2-5模块五:

各模块间的调用关系

首先创建一个堆栈并初始化,依次读入字符直到文件的末尾。

如果读得的字符为左括号,则将其压入堆栈。

如果读得的字符是右括号,而此时堆栈为空,进栈,则出现不匹配现象,报告错误;

否则,退出当前栈顶元素。

如果退出的栈顶符号不是对应的左括号,则出现不匹配,报告错误。

读到文件末尾,若堆栈非空,则报告错误。

3.算法描述

3-1程序流程图:

3-2程序代码:

#include"

stdio.h"

typedefintSElemType;

#defineM100/*定义堆栈的最大容量*/

SElemTypeSTACK[M];

inttop;

/*栈顶指针变量*/

intPAIRBRACKET(charE[])

{

SElemTypeSTACK[M];

charitem;

inti=0,top=-1;

/*初始化一个堆栈*/

while(E[i]!

='

\0'

){

if(E[i]=='

('

||E[i]=='

['

{'

STACK[++top]=E[i];

/*进栈*/

)'

if(top==-1){/*测试堆栈是否为空*/

printf("

mismatching!

"

);

return0;

}

item=STACK[top--];

/*退栈*/

if(item!

=E[i]-1){

}

elseif(E[i]=='

]'

}'

=E[i]-2){

i++;

}

if(top==-1)

printf("

matching!

\n"

else

return1;

}

voidmain()

chars[M]={0};

printf("

Pleaseentertheparenthesesarithmeticexpression:

scanf("

%s"

s);

PAIRBRACKET(s);

4.算法分析

首先创建一个堆栈

#defineM100

并初始化

top=-1

依次读入输入的表达式字符直到E[i]=’\0’结束。

while(E[i]!

return0;

if(top==-1)

时间、空间性能分析:

本算法采用的是顺序栈结构,定义了一个长100的字符型数组,时间主要花在表达式中括号的读取中,时间的多少取决于该表达式中括号的多少,总的来说时间性能还是不高的,而空间爱你性能则不错,与链栈相比节省很多空间。

所以本程序时间、空间性能不错。

5.心得体会

通过这次的数据结构课程设计实验周,我进一步理解了顺序堆栈的构造极其逻辑结构定义,并一定程度上掌握顺序堆栈的基本操作算法。

书本上对顺序堆栈的基本算法介绍的比较详尽,但由于我对这方面的知识了解真的不深,而且之前C语言的基础没有打好,程序设计过程中遇到不少难题,通过和直到老师、同学们的沟通,并上网查了些资料,问题终于得到一定程度上的解决。

这个程序中不足的地方在于由于堆栈是一个动态结构,而数组是一个静态结构,故利用静态结构的数组描述一个动态结构的堆栈,还存在溢出问题。

然而程序中只考虑到对空栈进行删除操作会产生的下溢问题,而忽略了对栈中已有M个元素时再做进栈操作会产生的上溢问题。

这一次程序设计实验周中我受益匪浅,既复习并熟悉了数组方面的知识,又掌握到了顺序堆栈的基本算法。

所学到的知识得到了很好的复习并巩固。

我认识到数据结构是实践很强的一门课程,光是“听”和“读”是绝对不够的,必须加强实践。

在写算法的过程中,出现过很多问题,然而在不断修改的过程中便是我学习的过程。

在这个过程中,只要全身心的投入了,便会发现很多乐趣。

6.参考资料

唐发根数据机构教程(第二版)北京航空航天大学出版社

东华理工学院长江学院

课程设计评分表

学生姓名:

班级:

学号:

课程设计题目:

项目内容

满分

实评

能结合所学课程知识、有一定的能力训练。

符合选题要求

(5人一题)

10

工作量适中,难易度合理

能熟练应用所学知识,有一定查阅文献及运用文献资料能力

理论依据充分,数据准确,公式推导正确

能应用计算机软件进行编程、资料搜集录入、加工、排版、制图等

能体现创造性思维,或有独特见解

总体设计正确、合理,各项技术指标符合要求。

说明书综述简练完整,概念清楚、立论正确、技术用语准确、结论严谨合理;

分析处理科学、条理分明、语言流畅、结构严谨、版面清晰

设计说明书栏目齐全、合理,符号统一、编号齐全。

 格式、绘图、表格、插图等规范准确,符合国家标准

有一定篇幅,字符数不少于5000

总分

100

指导教师

指导教师签名:

年月日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 表格类模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1