课程设计报告 一
需求分析 1、 一个完整的系统应具有以下功能: (1) I:初始化(Initialization)
从终端读入字符集大小n,以及n 个字符和n 个权值,建立哈夫曼树,并将它存于文件hfmTree 中
(2) E:编码(Encoding)
利用已建好的哈夫曼树(如不在内存,则从文件hfmTree中读入),对文件ToBeTran 中的正文进行编码,然后将结果存入文件CodeFile中
(3) D:译码(Decoding)
利用已建好的哈夫曼树将文件CodeFile 中的代码进行译码,结果存入文件TextFile 中
(4) P:印代码文件(Print)
将文件CodeFile 以紧凑格式显示在终端上,每行50个代码
同时将此字符形式的编码文件写入文件中
(5) T:印哈夫曼树(Tree Printing)
将已在内存中的哈夫曼树以直观的方式(树或凹入表形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint中
2、 利用哈夫曼编译码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本
3、 用户界面可以设计为“菜单”方式:显示上述功能符号,再加上“Q”,表示退出运行Quito
请用户键入一个选择功能符
此功能执行完毕后再显示此菜单,直至某次用户选择了“Q”为止
4、 在程序的一次执行过程中,第一次执行I,D 或C 命令之后,哈夫曼树已经在内存了,不必再读入
每次执行中不一定执行I 命令,因为文件hfmTree 可能早已建好
二、概要设计 1、部分函 数 1) 树与 编码类 型 struct HTNode 2) 选两 个最 小的树组 成二叉 树 Void Select(HNode *HT,int I,int &s1,int &s2) 3) 初始化哈夫曼树 void Initialization(HTNode *&HT,