哈夫曼编码与译码课程设计报告

哈夫曼编码与译码课程设计报告

ID:2544418

大小:2.42 MB

页数:60页

时间:2017-11-16

哈夫曼编码与译码课程设计报告_第1页
哈夫曼编码与译码课程设计报告_第2页
哈夫曼编码与译码课程设计报告_第3页
哈夫曼编码与译码课程设计报告_第4页
哈夫曼编码与译码课程设计报告_第5页
资源描述:

《哈夫曼编码与译码课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、课程名称:数据结构课程设计学院:管理学院专业班级:10信息管理与信息系统(2)班姓名:王高智学号:3110004891指导老师:丁天翔2012年06月18日59目录哈夫曼编码与译码2一、问题及功能分析2(一)要求:2(二)分析:2二、详细设计2(一)读取信息2(二)统计文本信息2(三)设计编码和译码方案3(四)计算压缩比3(五)整体流程3三、程序实现3(一)汇总3(二)具体实现代码31.com.gauze.Main32.com.gauze.charstatistics.CharData43.com.gauze.charstatistics.CharDataMapAct

2、or64.com.gauze.charstatistics.CharReader95.com.gauze.util.HaffmanNode106.com.gauze.util.HaffmanTree11四、调试分析14(一)统计英文文本:14(二)统计含有中英文文本15(三)查询只含有字符串“AAAABBBCDDBBAAA”的文本(课本示例):16手机信息管理17一、问题及功能分析17(一)功能要求:17(二)性能要求:17(三)分析:17二、详细设计20(一)持久层20(二)逻辑层21(三)展示层23三、程序实现27四、调试分析42(一)通讯录管理42(二)通话记录

3、47(三)信箱管理53五、课设总结5959哈夫曼编码与译码一、问题及功能分析(一)要求:从某文本文件中统计其中字符使用频率(由英语字母构成),建立对应的哈夫曼树,设计哈夫曼编码与译码方案,计算压缩比。(二)分析:读取并统计文本信息(统计每个字符的使用次数并计算使用频率)à根据统计的信息设计编码方案à译码à计算压缩比。二、详细设计(一)读取信息使用java.io.BufferedReader类读取文本字符。(二)统计文本信息需要统计的信息为字符的出现次数和文本的字符总数。字符总数:每读取一个字符,字符总数加1;字符出现次数:特征:1)每个字符对应的次数随着读取的进行可能

4、会发生改变,属于动态变量;2)不允许出现两个存储到相同的字符信息对象;3)当读取到新的字符时,需要添加新的存储字符信息的对象;4)每读取到一个字符,需要对所有已经读取的字符进行查找更新数据,查找频繁。分析:因为不允许存储重复的对象,因此应该采用Set集合进行存储,由于查找更新数据比较频繁,为提高效率,应该采用Hash散列存储结构,综上可得出结论:采用HashSet结构存储数据效率最高。59(一)设计编码和译码方案根据统计的信息:权值(频率)进行编码和译码。(二)计算压缩比计算压缩前和压缩后的文件字节总数只比。查询字符集不存在存在文本字符字符总数+1对应字符出现次数+1

5、新建一个存储新字符信息的对象,出现次数初始化为1统计完毕编码和译码计算压缩比(三)整体流程一、程序实现(一)汇总类类型描述com.gauze.Mainclass主方法com.gauze.charstatistics.CharDataclass存储字符信息com.gauze.charstatistics.CharDataMapActorclass操作字符信息com.gauze.charstatistics.CharReaderclass读取字符com.gauze.util.HaffmanNodeclass哈夫曼树节点类com.gauze.util.HaffmanTree

6、class哈夫曼数类(二)具体实现代码1.com.gauze.Mainpackagecom.gauze;importjava.io.FileNotFoundException;importcom.gauze.charstatistics.CharDataMapActor;importcom.gauze.charstatistics.CharReader;59publicclassMain{/***@paramargs*/publicstaticvoidmain(String[]args){try{CharReaderreader=newCharReader("./中文

7、.txt");CharDataMapActormap=newCharDataMapActor();booleandone=false;while(!done){intchint=reader.read();if(chint!=-1){charch=(char)chint;map.updateWeightByChar(newCharacter(ch));System.out.println("查询到字符:"+ch);}else{done=true;System.out.println("字符总数:"+reader.getLength().intValu

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

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

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