资源描述
word本科生实验报告实验课程 数据结构 学院名称 核技术与自动化工程学院 专业名称 测控技术与仪器专业 学生某某学生学号指导教师实验地点 6C802 实验成绩二16年3 月二16 年 3月填写说明1、 适用于本科生所有的实验报告印制实验报告册除外;2、 专业填写为专业全称,有专业方向的用小括号标明;3、 格式要求: 用A4纸双面打印封面双面打印或在A4大小纸上用蓝黑色水笔书写。 打印排版:正文用宋体小四号,1.5倍行距,页边距采取默认形式上下2.54cm,左右2.54cm,页眉1.5cm,页脚1.75cm。字符间距为默认值缩放100%,间距:标准;页码用小五号字底端居中。 具体要求:题目二号黑体居中;摘要“摘要二字用小二号黑体居中,隔行书写摘要的文字局部,小4号宋体;关键词隔行顶格书写“关键词三字,提炼3-5个关键词,用分号隔开,小4号黑体);正文局部采用三级标题;第1章 (小二号黑体居中,段前0.5行)1.1 小三号黑体段前、段后0.5行小四号黑体段前、段后0.5行参考文献黑体小二号居中,段前0.5行,参考文献用五号宋体,参照参考文献著录规如此GB/T 77142005。一、 问题描述假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,即或等为正确的格式,()等为不正确的格式。检验括号是否匹配。二、问题分析1数据条件要求输入随意含有,(,),的数据利用栈的特性完成此次括号匹配。2操作条件要求Visual C+中利用栈的应用表达此过程三、数据结构设计1逻辑结构设计栈的结构运行2物理结构设计栈的应用四、算法设计核心子函数1算法列表序号名称函数表示符操作说明1输出函数Printf输出一个函数的值2主函数main程序的主函数3条件语句If表示条件的选择4字符型语句Char表示字符2算法描述描述核心算法. Seqstack *Seqstack_Init() 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-; return seqstack-chseqstack-top;void seqstack_Push(Seqstack *seqstack,char c) if (seqstack-top=Length) printf(栈溢出n); return ; seqstack-chseqstack-top=c; seqstack-top+;void check_symbol(Seqstack *seqstack,char *a) int i; seqstack_Push(seqstack,a0); for (i=1;ichseqstack-top-1=)|(ai=)&seqstack-chseqstack-top-1=()|(ai=&seqstack-chseqstack-top-1=) Seqstack_Pop(seqstack); else seqstack_Push(seqstack,ai); if(seqstack-top=0) printf(括号匹配nn); else printf(括号不匹配nn);利用栈的先进后出的性质完成括号匹配的要求。在算法中设置一个栈,没读入一个括号,假如是右括号,如此或者使置于栈顶的最急迫的期待得以消除,或者是不合法的情况;假如是左括号,如此作为一个新的更急迫的期待压入栈中,自然使原有的在栈中的所有未消解的期待的急迫性都降了一级。五、数据说明变量含义变量i表示循环变量;Length表示栈的长度;变量a表示数组六、源程序清单. #include #include #include #define Length 100typedef struct stack char ch50; int top;Seqstack;Seqstack *Seqstack_Init() 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-; return seqstack-chseqstack-top;void seqstack_Push(Seqstack *seqstack,char c) if (seqstack-top=Length) printf(栈溢出n); return ; seqstack-chseqstack-top=c; seqstack-top+;void check_symbol(Seqstack *seqstack,char *a) int i; seqstack_Push(seqstack,a0); for (i=1;ichseqstack-top-1=)|(ai=)&seqstack-chseqstack-top-1=()|(ai=&seqstack-chseqstack-top-1=) Seqstack_Pop(seqstack); else seqstack_Push(seqstack,ai); if(seqstack-top=0) printf(括号匹配nn); else printf(括号不匹配nn); int main() char s50; Seqstack *seqstack; seqstack=Seqstack_Init(); printf(输入一串括号:n); scanf(%s,s); check_symbol(seqstack,s); return 0;.七、调试记录程序第六十七行出错运行正确八、运行说明学生实验 心得通过这次实验课程,加强了对循环函数,栈的理解和应用,数据结构的课程设计,相对来说还是一个较大的工程,虽然里面的内容不是很完备,但总体上还是一个比拟能要表现数据结构的知识点能力的程序了,这个设计让我们在课堂中学到的理论知识,解决相应的实际问题,深入理解和灵活掌握所学的内容,使我们实践的过程中收获匪浅,认真去做,踏踏实实,静静思考,慢慢进步,会有收获。利用栈能够做很多比拟简单的判断,简化了操作的过程。学生签名:喻志强 2016 年 4 月 14 日指导教师评语成绩评定:指导教师签名: 年 月 日.15 / 15
展开阅读全文