- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
括号匹配检查课程设计
衡阳师范学院
《C语言 数据结构》
题 目: 括号匹配的检验
班 级: 1 1 0 1
学 号:
作者姓名:
指导教师:
2012年11月目 录
1设计题目与要求 3
1.1实验目的 3
1.2问题描述 3
1.3设计要求 3
2总体设计思想及相关知识 3
2.1总体设计思想 3
2.2开发环境与工具........................................................ 4
3功能设计 4
3.1 抽象数据类型的定义 4
3.2 栈的基本运算 ......................................................4
3.3栈的基本操作的实现....................................................4
3.4模块流程图 6
4源程序代码 6
5测试及结果 9
6总结 11
7小组成员任务分配 11
参考文献 12
1.设计题目与要求
1.1实验目的
通过对括号匹配的检验的程序设计编写,深入了解和掌握栈的使用,了解栈先进后出的特点,掌握栈的表示和实现。
1.2问题描述
假设表达式中允许包括两种括号:圆括号和方括号,其嵌套的顺序随意,即([]())或[([][])]等为正确的格式,[(])或(()])均为不正确的格式。检验括号是否匹配的方法可用“期待的急迫程度”这个概念来描述。例如考虑下列括号序列: [ ( [ ] [ ] ) ]
1 2 3 4 5 6 7 8
当计算机接受了第一个括号后,它期待着与其匹配的第八个括号的出现,然而等来的却是第二个括号,此时第一个括号只能暂时靠边,而迫切等待与第二个括号相匹配的,第七个括号的出现,类似的,因等来的第三个括号,其期待的匹配程度较第二个括号更急迫,则第二个括号也只能靠边,让位于第三个括号,显然第二个括号的期待急迫性高于第一个括号;在接受了第四个括号后,第三个括号的期待得到满足,消解之后,第二个括号的期待匹配成了当前最急迫的任务了,······,依次类推。可见,这个处理过程恰与栈的特点相吻合。
1.3设计要求
读入圆括号和方括号的任意序列,输出“匹配”或“此串括号匹配不合法”。
2.总体设计思想及
2.1总体设计思
最内层(最迟出现)的左括号必须与最内层(最早出现)的同类右括号匹配,它最期待着急迫的配对。配对之后,期待得以消除。因此为左括号设置一个栈,置于栈顶的左括号期待配对的急切程度最高。另外,在算法的开始和结束时,栈都应该是空的。例如:[()[]]、 ([{}]) 、{([]]}
2.2开发环境与工具
系统平台:实现语言:C
开发工具:3.功能设计
3.1抽象数据类型的定义
堆栈的定义:栈(Stack)是限定只能在表的一端进行插入和删除操作的线性表。在表中,允许插入和删除的一端称作栈顶(top),不允许插入和删除的另一端称作栈底(bottom) 。=( SeqStack *)malloc(sizeof(SeqStack ));
s-top=-1;return s;
}
(2)判空栈
int Empty_Stack(SeqStack *s)
{
If(s-top==-1) return 1;
Else return 0;
}
(3)入栈
int Push_Stack(SeqStack *s,datatype x)
{
if(s-top==MAXSIZE-1) return 0; //栈满不能入栈
else{s-top++;
s-data[s-top]=x;
return 1;}
}
(4)出栈
int Pop_Stack(SeqStack *s,datatype *x)
{
if (Empty_Stack(s)) return 0; //栈空不能出栈
else {*x=s-data[s-top]; //栈顶元素存入*x,返回
s-top--;
return 1;}
}
(5)取栈顶元素
datatype Top_Stack(SeqStack *s)
{
if (Empty_Stack(s)) return 0; //栈空
else return(s-data[s-top]);
}
3.4模块流程
4.源程序代码
#includestdio.
文档评论(0)