好文档 - 专业文书写作范文服务资料分享网站

数据结构课程设计 - 哈夫曼编码 

天下 分享 时间: 加入收藏 我要投稿 点赞

《数据结构与算法》课程设计

《数据结构与算法》课程设计

目 录

一、 题目.........................................p1 二、 需求分析.....................................p2 三、 概要设计.....................................p2 四、 程序说明.....................................p3 五、 详细设计.....................................p4 六、 调试分析....................................p20 七、 实验心得与体会(总结)......................p21

一、 题目

1. 问题描述

利用赫夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。这要求在发送端通过一个编码系统对待传输数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站编写一个赫夫曼码的编/译码系统。

2. 基本要求

一个完整的系统应具有以下功能:

(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:打印赫夫曼树(Tree printing)。将已在内存中的赫夫曼树以直观的方式(比如树)显示在终端上,同时将此字符形式的赫夫曼树写入文件TreePrint 中。

3. 测试要求

(1)已知某系统在通信联络中只可能出现八种字符,其频率分别为0.05、0.29、0.07、0.08、0.14、0.23、0.03、0.11,试设计赫夫曼编码。

(2) 用下表给出的字符集和频度的实际统计数据建立赫夫曼树,并实现以下报文的编码和译码:“THIS PROGRAME IS MY FAVORITE”。

第 1 页

字符 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

4.实现提示

(1) 编码结果以文本方式存储在文件Codefile中。

(2) 用户界面可以设计为“菜单”方式:显示上述功能符号,再加上“Q”,表示退出运行Quit。请用户键入一个选择功能符。此功能执行完毕后再显示此菜单,直至某次用户选择了“Q”为止。

(3) 在程序的一次执行过程中,第一次执行I,D或C命令之后,赫夫曼树已经在内存了,不必再读入。每次执行中不一定执行I命令,因为文件hfmTree可能早已建好。

二、 需求分析

文件的保密性一直以来是网络关注的热点,该编译码器采用赫夫曼树算法对文本内容重新编码,译码。编译码器主要有二大转码模块和二大显示模块: 1.二大转码模块能对本程序目录下的ToBeTran和CodeFile文本分别进行编码和译码并存储在CodeFile和Textfile文件中,用户在程序第一次时需初始化赫夫曼树后方能进行编码译码操作,方便了用户对程序的操作;

2.两大显示模块能对本程序目录下的CodeFile和Textfile的内容提取到软件终端编辑框,便于对结果的查看。

三、概要设计

本程序采用二叉树的顺序存储结构:

typedef struct node{

int weight,lchild,rchild;

}BITnode;

第 2 页

赫夫曼编译器程序实现主要分为初始化建树、编码和译码三大转码模块。 1.编码:算法主要通过建立赫夫曼树(赫夫曼树)实现,并对ToBeTran文件进行编码存储在CodeFile文件中。图3-1编码流程图

2.译码:通过递归算法。图3-2译码流程图. 3.打印代码:通过文件操作将CodeFile中的二进制显示到终端并且存储到CodePrin.txt文件中。

4.提取破译文件:通过文件函数操作将Textfile文件提取到终端。

3-1赫夫曼树建立流程图 3-2译码流程图

第 3 页

数据结构课程设计 - 哈夫曼编码 

《数据结构与算法》课程设计《数据结构与算法》课程设计目录一、题目.........................................p1二、需求分析....................
推荐度:
点击下载文档文档为doc格式
1t6dc3o72x6rgfk15sw18xzko02xoc00fyx
领取福利

微信扫码领取福利

微信扫码分享