括号匹配 实验报告材料



《括号匹配 实验报告材料》由会员分享,可在线阅读,更多相关《括号匹配 实验报告材料(15页珍藏版)》请在装配图网上搜索。
1、word 本科生实验报告 实验课程 数据结构 学院名称 核技术与自动化工程学院 专业名称 测控技术与仪器专业 学生某某 学生学号 指导教师 实验地点 6C802 实验成绩 二〇16年3 月二〇16 年 3月 填写说明 1、 适用
2、于本科生所有的实验报告〔印制实验报告册除外〕; 2、 专业填写为专业全称,有专业方向的用小括号标明; 3、 格式要求: ① 用A4纸双面打印〔封面双面打印〕或在A4大小纸上用蓝黑色水笔书写。 ② 打印排版:正文用宋体小四号,1.5倍行距,页边距采取默认形式〔上下2.54cm,左右2.54cm,页眉1.5cm,页脚1.75cm〕。字符间距为默认值〔缩放100%,间距:标准〕;页码用小五号字底端居中。 ③ 具体要求: 题目〔二号黑体居中〕; 摘要〔“摘要〞二字用小二号黑体居中,隔行书写摘要的文字局部,小4号宋体〕; 关键词〔隔行顶格书写“关键词〞三字,提炼3-5个关键词,用分号隔开
3、,小4号黑体); 正文局部采用三级标题; 第1章 ××(小二号黑体居中,段前0.5行) 1.1 ×××××小三号黑体×××××〔段前、段后0.5行〕 小四号黑体〔段前、段后0.5行〕 参考文献〔黑体小二号居中,段前0.5行〕,参考文献用五号宋体,参照《参考文献著录规如此〔GB/T 7714-2005〕》。 一、 问题描述 假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,即〔[]〔〕〕或[〔[][]〕]等为正确的格式,[()等为不正确的格式。检验括号是否匹配。 二、问题分析 〔1〕数据条件要求 输入随意含有[,],(,),{,}
4、,的数据 利用栈的特性完成此次括号匹配。 〔2〕操作条件要求 Visual C++中利用栈的应用表达此过程 三、数据结构设计 〔1〕逻辑结构设计 栈的结构运行 〔2〕物理结构设计 栈的应用 四、算法设计〔核心子函数〕 〔1〕算法列表 序号 名称 函数表示符 操作说明 1 输出函数 Printf 输出一个函数的值 2 主函数 main 程序的主函数 3 条件语句 If 表示条件的选择 4 字符型语句 Char 表示字符 〔2〕算法描述〔描述核心算法〕 .. Seqstack *Seqstack_Init(
5、) { Seqstack *seqstack; seqstack=(Seqstack *)malloc(sizeof(Seqstack)); seqstack->top=0; return seqstack; } int Seqstack_Pop(Seqstack *seqstack) { if (seqstack->top==0) { printf("栈为空\n"); return 0; } seqstack->top--; retur
6、n seqstack->ch[seqstack->top]; } void seqstack_Push(Seqstack *seqstack,char c) { if (seqstack->top==Length) { printf("栈溢出\n"); return ; } seqstack->ch[seqstack->top]=c; seqstack->top++; } void check_symbol(Seqstack *seqstack,char *a) { int i;
7、
seqstack_Push(seqstack,a[0]);
for (i=1;i
8、 else { seqstack_Push(seqstack,a[i]); } } if(seqstack->top==0) { printf("括号匹配\n\n"); } else { printf("括号不匹配\n\n"); } 利用栈的先进后出的性质完成括号匹配的要求。 在算法中设置一个栈,没读入一个括号,假如是右括号,如此或者使置于栈顶的最急迫的期待得以消除,或者是不合法的情况;假如是左括号,如此作为一个新的更急迫
9、的期待压入栈中,自然使原有的在栈中的所有未消解的期待的急迫性都降了一级。
五、数据说明〔变量含义〕
变量i表示循环变量;
Length表示栈的长度;
变量a表示数组
六、源程序清单
. #include
10、k *seqstack; seqstack=(Seqstack *)malloc(sizeof(Seqstack)); seqstack->top=0; return seqstack; } int Seqstack_Pop(Seqstack *seqstack) { if (seqstack->top==0) { printf("栈为空\n"); return 0; } seqstack->top--; return seqstack->ch[se
11、qstack->top]; } void seqstack_Push(Seqstack *seqstack,char c) { if (seqstack->top==Length) { printf("栈溢出\n"); return ; } seqstack->ch[seqstack->top]=c; seqstack->top++; } void check_symbol(Seqstack *seqstack,char *a) { int i; seqstack_Pu
12、sh(seqstack,a[0]);
for (i=1;i
13、 { seqstack_Push(seqstack,a[i]); } } if(seqstack->top==0) { printf("括号匹配\n\n"); } else { printf("括号不匹配\n\n"); } } int main() { char s[50]; Seqstack *seqstack; seqstack=Seqstack_Init();
14、 printf("输入一串括号:\n"); scanf("%s",s); check_symbol(seqstack,s); return 0; } . 七、调试记录 程序第六十七行出错 运行正确 八、运行说明 学生实验 心得 通过这次实验课程,加强了对循环函数,栈的理解和应用,数据结构的课程设计,相对来说还是一个较大的工程,,虽然里面的内容不是很完备,但总体上还是一个比拟能要表现数据结构的知识点能力的程序了,这个设计让我们在课堂中学到的理论知识,解决相应的实际问题,深入理解和灵活掌握所学的内容,使我们实践的过程中收获匪浅,认真去做,踏踏实实,静静思考,慢慢进步,会有收获。 利用栈能够做很多比拟简单的判断,简化了操作的过程。 学生〔签名〕:喻志强 2016 年 4 月 14 日 指导 教师 评语 成绩评定: 指导教师〔签名〕: 年 月 日 . 15 / 15
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。