(2) 对密文进行编码后的结果存于文件CodeFile中;
(3) 对文件CodeFile中的代码进行译码,结果存于文件TextFile中;
(4) 打印哈夫曼树。将已在内存中的哈夫曼树以直观的方式显示在终端上。
8. 图遍历的演示 【问题描述】
很多涉及图上操作的算法都是以图的遍历操作为基础的。试写一个程序,演示在连通的无向图上访问全部结点的操作。 【基本要求】
以邻接多重表为存储结构,实现连通无向图的深度优先和广度优先遍历。以用户指定的结点为起点,分别输出每种遍历下的结点访问序列和相应生成树的边集。
【测试数据】
教科书图7.33。暂时忽略里程,起点为北京。 【实现提示】
设图的结点不超过30个,每个结点用一个编号表示(如果一个图有n个结点,则它们的编号分别为1,2,?,n)。通过输入图的全部边(存于数据文件中,从文件读写)输入一个图,每个边为一个数对,可以对边的输入顺序作出某种限制。注意,生成树的边是有向边,端点顺序不能颠倒。 【选作内容】
(1)借助于栈类型(自己定义和实现),用非递归算法实现深度优先遍历。 (2)以邻接表为存储结构,建立深度优先生成树和广度优先生成树,再按凹入表或树形打印生成树。
9. 最小生成树问题 【问题描述】
若要在n个城市之间建设通信网络,只需要架设n-1条线路即可。如何以最低的经济代价建设这个通信网,是一个网的最小生成树问题。 【基本要求】
(1) 利用克鲁斯卡尔算法求网的最小生成树。
(2) 实现教科书 6.5 节中定义的抽象数据类型 MFSet 。以此表示构造生成树过程中的连通分量。
(3) 以文本形式输出生成树中各条边以及他们的权值。 【实现提示】
通信线路一旦建立,必然是双向的。因此,构造最小生成树的网一定是无向网。设图的顶点数不超过30个,并为简单起见,网中边的权值设成小于 100 的整数,可由用户通过键盘输入。
10. 哈希表设计 【问题描述】
针对班级同学的“名字”设计一个哈希表,使得平均查找长度不超过R,完成相应的建表和查表程序。 【基本要求】
假设人名为中国人姓名的汉语拼音形式。待填入哈希表的人名共有30个,
取平均查找长度的上限为2。哈希函数用除留余数法构造,用伪随机探测再散列法处理冲突。 【测试数据】
取班级同学的30个人的姓名。 【实现提示】
如果随机函数自行构造,则应首先调整好随机函数,使其分布均匀。人名的长度均不超过19个字符(最长的人名:如庄双双(Zhangshuangshuang)。字符的取码方法可直接利用C语言中的toascii函数,并可对过长的人名先作折叠处理。
六、 工作要求
1. 上机前认真使用C语言编写好程序,采用Visual C++6.0作为编译环境;上
机时认真独立完成任务;任务完成后现场验收和提问;
2. 根据具体任务要求,提交源程序电子档和纸质课程设计说明书。
源代码和相关数据,放到一个目录下,目录名以学号加姓名方式命名。 课程设计报告统一用A4纸打印,并装订成册,封面格式参见所附文档,正文格式要求参见附录1。课程设计报告内容具体要求如下:
1. 课程设计实验报告内容总体要求 1)给出问题分析过程
根据自身对课程的掌握程度,充分分析和理解问题的设计要求,给出较为明确、简洁的设计思路。
2)给出数据结构描述
根据要解决的问题,考虑各种可能的数据结构类型,从中选择一种较为有效的方法,并写出采用的数据结构描述及其功用。
3)给出相应算法设计
根据问题分析的结果,并确立好所选的数据结构描述,然后写出合理的算法设计过程,特别要注意所使用函数间的调用与被调用关系。
4)给出详细程序清单
根据算法的内容,用计算机语言(如C语言)编写完整的程序,并将程序在机器上反复调试,直到结果正确为止,程序要求附上详细注解。特别要注意算法与程序的区别以及上下层模块间的接口处理。
5)给出程序运行结果
利用典型的测试用例,将数据输入到程序执行过程中去,记下执行过程中屏幕显示情况与相应结果。
2. 具体内容要求:报告包括以下7个内容:
1)以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?并明确规定:
(1) 输入的形式和输入值的范围; (2) 输出的形式;
(3) 程序所能达到的功能;
(4) 测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结
果。
2)概要设计
说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。
3)详细设计
实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);画出函数和过程的调用关系图。
4)调试分析 内容包括:
(1) 调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;
(2) 算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)
(3) 改进设想;
(4) 经验和体会等。 5)用户使用说明
说明如何使用你编写的程序,详细列出每一步的操作步骤。 6)测试结果
列出你的测试结果,包括输入和输出。这里的测试数据应该完整和严格,最好多于需求分析中所列。
7)附录
带注释的源程序,如果提交程序,可以只列出程序文件名的清单。
七、成绩评定标准
由指导教师根据学生完成任务的情况、课程设计说明书的质量和课程设计过程中的态度等综合打分。
1. 课程设计说明书:30%
包括设计说明书内容的全面性、正确性,文字表述的准确性和条理性,以及书写的工整程度等。
2.平时:30%
平时主要包括考勤和操作练习的实际情况。 3. 设计末考核:40%
包括上机验收结果和现场提问结果。 成绩评定标准:
? 优(90-100):能很好地完成实验所要求的任务,达到任务书中规定的
全部要求,设计说明书能对整个任务进行全面、系统的总结,并能运用学过的理论知识对某些问题加以分析,在考核时能很圆满地回答问题,并有某些独到见解。学习态度很端正。
? 良(80-89):能较好地完成实验所要求的任务,达到任务书中规定的全部要求,设计说明书能对整个系统内容进行比较全面、系统的总结。考核时能较圆满地回答问题,学习态度较端正。
? 中(70-79):达到实验任务书中规定的主要要求,设计说明书能对整个系统内容进行比较全面的总结,在考核时能正确地回答主要问题,学习态度端正。
? 差(60-69):完成了实验任务书的主要任务,达到任务书中规定的基本要求,能够完成设计说明书,内容基本正确但不够完整、系统,考核中能回答主要问题。学习态度基本端正。
? 不及格(<60):未达到实验任务书中规定的基本要求,设计说明书马虎潦草或内容有明显错位;考核时不能回答主要问题或有原则性错误。学习态度不端正。
附:
①凡是上机未到者,每次扣除5分。
②上机时间内,做与本课程设计无关事情者,予以警告。屡教不改者当次上机视为旷课。处理办法见第①条。
③上机时间内,无正当理由离开实验室长达半小时者,当次上机视为旷课。处理办法见第①条。
④课程设计整个过程中,如果请假超过5次,即5次上机未能前来者,请速去系办公室办理缓考事宜。
七、主要参考资料
[1] 严蔚敏, 吴伟民. 数据结构(C语言版). 北京: 清华大学出版社, 1997.4 [2] 严蔚敏, 吴伟民, 米宁. 数据结构题集(C语言版). 北京: 清华大学出
版社, 1999.2
附录1 武汉工业学院课程设计说明书(报告)撰写规范
(一)正文:汉字应采用《简化汉字总表》规定的简化字,并严格执行汉字的规范。所有文字字面清晰,不得涂改。要求文字通顺,语言流畅,无错别字,不得使用铅笔书写。正文内容层次序号为:1、1.1、1.1.1??。 正文内容一般为:
1、选题背景:说明本课题应解决的主要问题及应达到的技术要求;简述本设计的指导思想。
2、方案论证:说明设计原理并进行方案选择,阐明为什么要选择这个设计方案以及所采用方案的特点。
3、过程(设计或实验)论述:对设计工作的详细表述。要求层次分明、表达确切。
4、结果分析:对研究过程中所获得的主要的数据、现象进行定性或定量分析,得出结论和推论。
5、结论或总结:对整个研究工作进行归纳和综合。
(二)表格
说明书(报告)的表格可以统一编序(如:表15),也可以逐章单独编序(如:表2.5),采用哪种方式应和插图及公式的编序方式统一。表序必须连续,不得重复或跳跃。
表格的结构应简洁。
表格中各栏都应标注量和相应的单位。表格内数字须上下对齐,相邻栏内的数值相同时,不能用‘同上’、‘同左’和其它类似用词,应一一重新标注。
表序和表题置于表格上方中间位置,无表题的表序置于表格的左上方或右上方(同一篇论文位置应一致)。
(三)图
插图要精选。图序可以连续编序(如 图52),也可以逐章单独编序(如 图6.8),采用哪种方式应与表格、公式的编序方式统一,图序必须连续,不得重复或跳跃。仅有一图时,在图题前加‘附图’字样。课程设计中的插图以及图中文