数据结构实习报告探究.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1.实习一1.1实习要求设计综合测评工具,用户输入学生课程及成绩信息,自定义综合测评公式,程序输出测评排序结果。用户输入信息:学生信息表、课程信息表、课程成绩单学生信息表:学号、班级、姓名课程信息表:名称、学分、编码课程成绩单:学号、成绩(每门课一份)程序输出信息:测评结果(学号、姓名、综合测评排名)1.2实现过程设计两个类,分别为课程类和学生类。课程类包括课程编码、课程名称以及学分,学生信息类包括学生姓名、学号、班级、所选课程、每门课程的成绩以及综测成绩。链表结点的数据域为学生信息。从学生信息表、课程信息表、课程成绩单等5个文件中读取信息,对学生数组进行初始化。根据初始化信息计算综测成绩,并将结果赋予学生类中综测成绩变量。根据综测成绩的高低对学生进行排序,并输出。1.3出现的问题及解决方案个人认为本次实习最大的困难就是不知道怎么合理的设计类以及怎么从文件中读取数据。当我把老师给的5个文件中的数据都输入到excel表格中后,意识到究竟该设计几个类,以及每个类都有哪些信息。文件读取的解决方法是,首先读入学生的学号、班级、姓名这三个信息,再读入课程信息,最后读入每门课程的成绩。只要解决了这两个问题,整个实习要求就完成的差不多了。与实习二实习三相比,实习一是这三次实习中最简单的一个。1.4亮点如何在学生学号班级姓名已读入的情况下读取每门功课的成绩1.5运行结果2.实习二2.1实习要求在实习一综合测评工具基础上,允许用户输入综合测评公式。用户输入信息:除实习一的输入外,新增综合测评公式测评公式:课程编码、加权系数、运算符程序输出信息:综合测评公式、测评结果(学号、姓名、综合测评排名)2.2实现过程在实习一的基础上,新增顺序栈及计算器类。在这个程序中,为了方便,我用A、B、C分别表示某学生数据结构的成绩、遥感原理与应用的成绩以及自然地理的成绩,a、b、c表示该门课相对应的学分。输入中缀表达式,并以井号键结束。顺序栈将中缀表达式表示的综合测评公式转化为后缀表示,计算器类用来计算后缀表达式的值。扫描中缀表达式、将它转化为后缀表达式的算法描述如下:①操作符栈初始化,将结束符#进栈。然后读入中缀表达式字符流的首字符ch。②重复执行以下步骤,直到ch==‘#’,同时栈顶的操作符也是‘#’,停止循环 a.若ch是操作数直接输出,读入下一个字符ch。b.若ch是操作符,判断ch的优先级icp和当前位于栈顶的操作符op的优先级isp:·若icp(ch)isp(op),令ch进栈,读入下一个字符ch。·若icp(ch)isp(op),退栈并输出·若icp(ch)==isp(op),退栈但不输出,若输出的是‘(’号读入下一字符ch③算法结束,输出序列即为所需的后缀表达式。利用后缀表示求解表达式的值,从左向右顺序地扫描表达式,然后根据他的类型作出如下相应的操作:如果该项是操作数,即找到该学生这一门的成绩或者这门课程的学分,将其压入栈中;如果该项是操作符op,则连续从栈中退出两个操作数X和Y,形成运算指令XopY,并将计算结果重新压入栈中。当表达式的所有项都扫描并处理完后,栈顶存放的就是最后的计算结果。讲计算结果赋予学生类的score变量中。2.3出现的问题及解决方案首先,测试中缀转后缀的功能时,我参考课本100页的代码,发现无论如何表达式中最后一个操作符不能输出,仔细看后发现是书上的代码出了问题,读到#后while循环不再执行,直接退出。修改后功能正常。其次,一开始我的设想是在输入测评公式并转换为后缀表达式后,直接计算表达式的值。后来在自己写代码时发现操作起来有些困难。只好改成输入测评公式并转换为后缀表达式显示,然后手动输入后缀表达式计算。2.4亮点输入中缀测评公式的表达式并计算每个学生的综测成绩2.5运行结果3.实习三3.1实习要求统计文章中不同单词出现的频率,使用哈夫曼树建立编码结构,生成编码信息,将英文文章以密码形式输出。用户输入信息:文章.txt程序输出信息:密码形式文章、密码本3.2实现过程首先从文件中读入数据,文章按行存入vector容器中,然后统计每个单词出现的频率,用map容器将单词和频率关联。用Huffman算法构造一棵Huffman树,Huffman树用三叉链表表示,结点权值排序过程用堆排序实现。从叶节点开始向上回溯,输出该叶节点的Huffman编码,并存入密码本文件中。再次打开文章txt,根据密码本文件中的解译结果,对文章进行编码,最后输出之。3.3出现的问题及解决方案第一次看到这个题目我是拒绝的,感觉太困难了。第一个难点是如何统计文章中单词的频率,因为一篇文章中不只有单词,还有标点。最初的设想是单词与标点分开统计,但是在我能力范围内的文件读入方法都是以空格作为终止符,最终放弃这个方案。后来查阅资料,在《C++ primer》上发现一

文档评论(0)

1112111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档