哈夫曼树的应用数据结构课程设计

哈夫曼树的应用数据结构课程设计

ID:14714010

大小:193.50 KB

页数:20页

时间:2018-07-30

哈夫曼树的应用数据结构课程设计_第1页
哈夫曼树的应用数据结构课程设计_第2页
哈夫曼树的应用数据结构课程设计_第3页
哈夫曼树的应用数据结构课程设计_第4页
哈夫曼树的应用数据结构课程设计_第5页
资源描述:

《哈夫曼树的应用数据结构课程设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、各专业完整优秀毕业论文设计图纸《数据结构》课程设计报告题目:哈夫曼树应用学生姓名:学号:201317010201专业班级:计科13102同组姓名:指导教师:设计时间:2014年下学期第18周指导老师意见:评定成绩:签名:日期:目录一、需求分析21.20分析问题22.确定解决方案23.输入的形式和输入值的范围34.输出的形式35.程序所能达到的功能3二、概要设计41.主程序的流程图:42.程序中数据类型的定义:43.各程序模块之间的层次(调用)关系:4三、详细设计51.哈夫曼树存储及类的定义:52.哈夫曼树的基本操作:63.主

2、函数7四、调试分析和测试结果.91.测试数据及其输出结果:92.调试过程中遇到的问题及解决办法:13五、总结14六、参考文献14七、致谢14八、附录14一、需求分析1.分析问题20利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。为这样的信息收发站写一个哈夫曼码的编/译码系统。1.确定解决方案设计建立带权的哈夫曼树,确定哈夫曼树的

3、类与成员函数,以及各函数之间的调用关系,采用动态数组的存储结构存储所需要的数据,通过不同的函数来实现编码,译码以及打印二进制编码、哈夫曼树,把不同的数据存入不同的txt文件中,通过主函数调用来实现功能检测。2.输入的形式和输入值的范围手动或者从文本中读入数据的形式初始化哈夫曼树,从键盘中或者文件中读入数据,以字母A-Z代表结点,以自然数代表权值,字符串提示使用者所要执行的操作。 4.输出的形式 在显示器界面上或者以文本的形式来实现程序调试的输出。5.程序所能达到的功能 (1)I:初始化(Initialization)。从终端

4、读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存于文件hfmTree中。(2)E:编码(Encoding)。利用已建好的哈夫曼树(如不在内存,则从文件hfmTree中读入),对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中。(3)D:译码(Decoding)。利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中。(4)P:打印代码文件(Print)。将文件CodeFile以紧凑格式显示在终端上,每行50个代码。同时将此字符形式的编码文件写入文件

5、CodePrin中。测试数据:(1)20利用下面这道题中的数据调试程序。某系统在通信联络中只可能出现八种字符,其概率分别为0.25,0.29,0.07,0.08,0.14,0.23,0.03,0.11,试设计哈夫曼编码。(2)用下表给出的字符集和频度的实际统计数据建立哈夫曼树,并实现以下报文的编码和译码:“THISPROGRAMISMYFAVORITE”。字符   空格   A   B   C   D   E   F   G   H   I   J   K   L   M频度6413223210321154757153220

6、字符   N   O   P   Q   R   S   T   U   V   W   X   Y   Z   频度   57   63   15   1   48   51   80   23   8   18   1   16   1   实现提示:(1)编码结果以文本方式存储在文件CodeFile中。(2)用户界面可以设计为“菜单”方式:显示上述功能符号,再加上“Q”,表示退出运行Quit。请用户键入一个选择功能符。此功能执行完毕后再显示此菜单,直至某次用户选择了“Q”为止。(3)在程序的一次执行过程中,第一次执行I

7、,D或E命令之后,哈夫曼树已经在内存了,不必再读入。每次执行中不一定执行I命令,因为文件hfmTree可能早已建好。二、概要设计I.初始化E.编码D.译码P.打印编码代码Q.退出请重新输入选项判断选项是否正确选择菜单项主菜单开始1.主程序的流程图:是否图一:主程序流程图 2.程序中数据类型的定义:20用到三组结构体,分别是哈夫曼树的动态数组存储结构*HuffmanTree,哈夫曼编码表的存储结构HuffmanCode,字符结点的动态数组存储结构wElem 以及哈夫曼树类定义class Huffman。3.各程序模块之间的层次

8、(调用)关系: 主函数main()调用初始化,编码,译码,打印二进制编码,打印哈夫曼树这五个子函数;进入初始化功能后调用手动输入,文本读入,默认文本这三个函数;进入编码功能后调用手动编码,文本读入编码这两个函数;进入译码功能后调用手动译码,文本读入译码这两个函数(如图2所示)。手动输入图二

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。