欢迎来到天天文库
浏览记录
ID:12593735
大小:245.42 KB
页数:35页
时间:2018-07-18
《霍夫曼编码译码器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数据结构课程设计(哈夫曼编/译码器)院系信息科学与工程学院专业班级学生姓名学号课程设计日期:2011年6月26日至2011年7月7日35目录一、问题描述.................................................3二、需求分析1、基本要求2、测试数据..................................................3三、概要设计.................................................4四、详细设计................
2、.................................7五、测试分析...............................................17六、课程设计总结.......................................26七、附录(源代码).........................................2735一、问题描述利用哈夫曼编码进行信息通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传
3、来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站写一个哈夫曼编/译码系统。二、需求分析1、基本要求一个完整的系统应具有以下功能:(1)I:初始化(Initialization)。从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存于文件hfmTree中。(2)E:编码(Encoding)。利用已建好的哈夫曼树(如不在内存,则从文件htmTree中读入),对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中。(3)D:译码(De
4、coding)。利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中。(4)P:印代码文件(Print)。将文件CodeFile以紧凑格式显示在终端上,每行50个代码。同时将此字符形式的编码写入文件CodePrint中。35(5)T:印哈夫曼树(TreePrinting)。将已在内存中的哈夫曼树以直观的方式(树或凹入表形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint中。2、测试数据(1)数据一:已知某系统在通信联络中只可能出现8种字符,其概率分别为0.05,0.29,0.07,0
5、.08,0.14,0.23,0.03,0.11,以此设计哈夫曼编码。利用此数据对程序进行调试。(2)用下表给出的字符集和频度实现统计数据建立哈夫曼树,并实现以下报文的编码和译码:“THISPROGRAMISMYFAVOURITE”。字符ABCDEFGHIJKLM频度1866413223210321154757153220字符NOPQRSTUVWXYZ频度5763151485180238181161二、概要设计一个完整的系统应具有以下功能:nI:初始化(Initialization)。从终端读入字符集大小n35,以及n个字符和n个权值,建立赫
6、夫曼树,并将它存于文件hfmTree中。①对赫夫曼树初始化。②根据书本算法,对树进行从叶子到根的逆向求每个字符的赫夫曼编码。③更新赫夫曼树,并存到hfmTree.txt中。流程图如下:开始传入参数:结点个数nI<=n?NY动态分配内存,声明哈夫曼树HT,并对其值进行初始化建哈夫曼树,依次在HT[1..i-1]中Selectparent为0且weight最小的两个结点分配n个字符编码的头指针向量和求编码的工作区间从叶子到根逆向逐个字符求哈夫曼编码35释放工作空间结束图1算法流程图nE:编码(Encoding)。利用已建好的哈夫曼树,对文件To
7、BeTran中的正文进行编码,然后将结果存入文件CodeFile中。①将终端输入须要编码的语句逐字在已建好的赫夫曼树中查找。②当在树中找到相匹配字符时,将该字符对应的赫夫曼编码用strcat()统一存到code[]数组。③最后将code[]数组中的编码在终端输出并存储到CodeFile.txt中。nD:译码(Decoding)。利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件Textfile中。①从CodeFile.txt中获取须要译码的编码组。②将编码逐一读入,并在赫夫曼中根据左‘0’右‘1’去查找字符。③将译好的
8、语句在终端输出,并存至Textfile.txt中。nP:打印表(TreePrint35)。将已建立好的赫夫曼树的存储情况在终端以表格的形式罗列出来,使树的调用看起来更直观。nT:
此文档下载收益归作者所有