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