欢迎来到天天文库
浏览记录
ID:39184818
大小:162.93 KB
页数:11页
时间:2019-06-26
《括号匹配 实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、本科生实验报告实验课程数据结构学院名称核技术与自动化工程学院专业名称测控技术与仪器专业学生姓名学生学号指导教师实验地点6C802实验成绩二〇16年3月二〇16年3月填写说明1、适用于本科生所有的实验报告(印制实验报告册除外);2、专业填写为专业全称,有专业方向的用小括号标明;3、格式要求:①用A4纸双面打印(封面双面打印)或在A4大小纸上用蓝黑色水笔书写。②打印排版:正文用宋体小四号,1.5倍行距,页边距采取默认形式(上下2.54cm,左右2.54cm,页眉1.5cm,页脚1.75cm)。字符间距为默认值(缩放100%,间距:标准)
2、;页码用小五号字底端居中。③具体要求:题目(二号黑体居中);摘要(“摘要”二字用小二号黑体居中,隔行书写摘要的文字部分,小4号宋体);关键词(隔行顶格书写“关键词”三字,提炼3-5个关键词,用分号隔开,小4号黑体);正文部分采用三级标题;第1章××(小二号黑体居中,段前0.5行)1.1×××××小三号黑体×××××(段前、段后0.5行)1.1.1小四号黑体(段前、段后0.5行)参考文献(黑体小二号居中,段前0.5行),参考文献用五号宋体,参照《参考文献著录规则(GB/T7714-2005)》。一、问题描述假设表达式中允许包含两种括号
3、:圆括号和方括号,其嵌套的顺序随意,即([]())或[([][])]等为正确的格式,[()等为不正确的格式。检验括号是否匹配。二、问题分析(1)数据条件要求输入随意含有[,],(,),{,},的数据利用栈的特性完成此次括号匹配。(2)操作条件要求VisualC++中利用栈的应用表达此过程三、数据结构设计(1)逻辑结构设计栈的结构运行(2)物理结构设计栈的应用四、算法设计(核心子函数)(1)算法列表序号名称函数表示符操作说明1输出函数Printf输出一个函数的值2主函数main程序的主函数3条件语句If表示条件的选择4字符型语句Cha
4、r表示字符(2)算法描述(描述核心算法)..Seqstack*Seqstack_Init(){Seqstack*seqstack;seqstack=(Seqstack*)malloc(sizeof(Seqstack));seqstack->top=0;returnseqstack;}intSeqstack_Pop(Seqstack*seqstack){if(seqstack->top==0){printf("栈为空");return0;}seqstack->top--;returnseqstack->ch[seqstack->t
5、op];}voidseqstack_Push(Seqstack*seqstack,charc){if(seqstack->top==Length){printf("栈溢出");return;}seqstack->ch[seqstack->top]=c;seqstack->top++;}voidcheck_symbol(Seqstack*seqstack,char*a){inti;seqstack_Push(seqstack,a[0]);for(i=1;i6、k->ch[seqstack->top-1]=='[')7、8、(a[i]==')'&&seqstack->ch[seqstack->top-1]=='(')9、10、(a[i]=='}'&&seqstack->ch[seqstack->top-1]=='{')){Seqstack_Pop(seqstack);}else{seqstack_Push(seqstack,a[i]);}}if(seqstack->top==0){printf("括号匹配");}else{printf("括号不匹配");}利用栈的先进后出的性质完成括11、号匹配的要求。在算法中设置一个栈,没读入一个括号,若是右括号,则或者使置于栈顶的最急迫的期待得以消除,或者是不合法的情况;若是左括号,则作为一个新的更急迫的期待压入栈中,自然使原有的在栈中的所有未消解的期待的急迫性都降了一级。五、数据说明(变量含义)变量i表示循环变量;Length表示栈的长度;变量a表示数组六、源程序清单.#include#include#include#defineLength100typedefstructstack{charch[50];inttop;12、}Seqstack;Seqstack*Seqstack_Init(){Seqstack*seqstack;seqstack=(Seqstack*)malloc(sizeof(Seqstack));seqstack->top=0;ret
6、k->ch[seqstack->top-1]=='[')
7、
8、(a[i]==')'&&seqstack->ch[seqstack->top-1]=='(')
9、
10、(a[i]=='}'&&seqstack->ch[seqstack->top-1]=='{')){Seqstack_Pop(seqstack);}else{seqstack_Push(seqstack,a[i]);}}if(seqstack->top==0){printf("括号匹配");}else{printf("括号不匹配");}利用栈的先进后出的性质完成括
11、号匹配的要求。在算法中设置一个栈,没读入一个括号,若是右括号,则或者使置于栈顶的最急迫的期待得以消除,或者是不合法的情况;若是左括号,则作为一个新的更急迫的期待压入栈中,自然使原有的在栈中的所有未消解的期待的急迫性都降了一级。五、数据说明(变量含义)变量i表示循环变量;Length表示栈的长度;变量a表示数组六、源程序清单.#include#include#include#defineLength100typedefstructstack{charch[50];inttop;
12、}Seqstack;Seqstack*Seqstack_Init(){Seqstack*seqstack;seqstack=(Seqstack*)malloc(sizeof(Seqstack));seqstack->top=0;ret
此文档下载收益归作者所有