指引网

当前位置: 主页 > 编程开发 > C >

哈夫曼编码与译码

来源:网络 作者:佚名 点击: 时间:2017-07-19 22:59
[摘要] 

一、实验内容 
【问题描述】 
      利用哈夫曼编码进行住处通讯可以大大提高信道利用率,缩短住处传输时间,降低成本,但是,这要求在发送端通过一个编码系统将传输的数据预先编码,在接收端通过一个译码系统对传来的数据进行译码(复原),对于双向传输信息的信道,每端都一个完整的编码译码系统,试为这样的住处收发站写一个哈夫曼友的编码译码系统. 

【基本要求】:一个完整的系统应以下功能: 
(1) I. 初始化(Initialization)。从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存放在文件hfmTree中. 
(2) E. 编码(Encoding)。利用已建立好的哈夫曼树(如不在内存,则从文件hfmTree中读入),对文件ToBeTran中的正文进行编码,然后将结果代码存(传输)到文件CodeFile中. 
(3) D. 译码(Decoding)。利用已建好的哈夫曼树,对传输到达的CodeFile中的数据代码进行译码,将译码结果存入文件TextFile中.  
(4) P. 印文件代码(Print)。将文件CodeFile以紧凑格式显示在终端上,每行50个代码。同时将此字符形式的编码文件写入文件CodePrin中。  
(5) T. 印哈夫曼树(TreePrinting)。将已在内存中的哈夫曼树以直观的方式(树或凹入表的形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint中。 
       
测试数据: 
(1) 利用教科书例6-2中的数据调试程序。 
(2) 用下表给出的字符集和频度的计数据建立哈曼树,并实现以下报文的编码和译码:“THIS PROGRAM IS MY FAVORITE”.。 
字符       A   B    C    D    E    F    G    H    I    J    K    L    M 
频数 186  64   13   22   32   103  21   15   47   57   1    5    32   20 
字符 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  

------分隔线----------------------------