1 / 25
文档名称:

哈弗曼编码数据结构课程设计报告.doc

格式:doc   大小:325KB   页数:25页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

哈弗曼编码数据结构课程设计报告.doc

上传人:Seiryu 2022/5/22 文件大小:325 KB

下载得到文件列表

哈弗曼编码数据结构课程设计报告.doc

相关文档

文档介绍

文档介绍:哈弗曼编码数据结构课程设计报告
大学
课程设计(论文)
题 目: 哈夫曼树应用 院 (系): 信控学院 专业班级: 计算机 姓 名:
学 号:
指导教师:
2008年 9月 14 日
大学课程设计,论文~
大学ase „q?:
接受命令;
第 5 页( 共 26 页)
大学课程设计,论文~
处理命令;
}
}
开始
定义各种变量
显示主菜单
选择
选‘e’: 选‘b’: 选‘d’: 选‘p’: 选‘q’: 从文件初始化哈从文件打印编退出程
读入需序 夫曼树并读入需好的哈
要编码建立哈夫要译码夫曼编 的字符曼树显示的字符码
串并进所建立好串并进
行编码 的哈夫曼行译码 树(以树
的形式)
程序结束
图 1系统流程图
第 6 页( 共 26 页)
大学课程设计,论文~
五、 详细设计
1、系统的抽象数据类型的定义:
typedef struct //哈夫曼树结构体的定义与声明 {
char data; //输入的字符
int weight; //权值
int parent; //双亲
int lchild; //左孩子
int rchild; //右孩子
}hfmNode,* hfmTree;
struct hfmCode //哈夫曼编码结构体的定义与声明 {
char cd[Max];
int start;
};
2、模块划分
(1)、初始化哈夫曼树与哈夫曼树信息输出模块。
void initialhfmTree ();
void select (int i,int& x, int& y);
void makehfmTree () ;
void outhfmTree ();
void coprint (hfmTree start,hfmTree HT);
void hfmTreePrint (ht,2*n-1);
(2)、哈夫曼编码操作模块。
int find (char c);
void hfmcoding (tx); (3)、哈夫曼译码操作模块。
第 7 页( 共 26 页)
大学课程设计,论文~
hfmdecode (dx);
(4)、哈夫曼编码的打印操作模块。
hfmCodePrint ();
4、 各个模块功能简述:
(1). 初始化哈夫曼树与哈夫曼树信息输出模块:
,将其中的信
息存储到一位数组tx中,并对其进行操作建立哈夫曼树,
,并以
树的形式输出在终端上
(2). 哈夫曼编码操作模块:
,根据所建
立的哈夫曼树对文件扫描并编码,并将结果存储到

(3). 哈夫曼译码操作模块:
根据计算得到的编码字符串将其存储到以为数组dx
中,。 (4). 哈夫曼编码的打印操作模块:
将程序执行过程中内存中的编码字符串以50个字符
为一行显示在终端上。
4、各个模块的流程图
第 8 页( 共 26 页)
大学课程设计,论文~
(1). 初始化哈夫曼树与哈夫曼树信息输出模块:
开始
定义变量并初始化
假 查找所需
文件

文件,并提示 写入内容按‘b’初始化哈夫曼函数
继续执行;
选择最小两棵子树 文件
构建哈夫曼树
选择‘b’
输出哈夫曼树的基本信息
以树的形式打印哈夫曼树
跳出
图2 建立哈夫曼树流程图 (2). 哈夫曼编码操作模块:
第 9 页( 共 26 页)
大学课程设计,论文~
开始
定义变量并初始化
调用哈夫曼编码初始化函数
假 查找所需文
件是否存在

不存在,创建该文 真
件并输入相关信息 调用字符匹配函数
继续选择‘e’
假 判断字符
是否匹配
给出提
示 真 提示字
符‘c’ 进行编码
与所建 立的哈
夫曼树 编码结束 跳出
不匹配
图3. 哈夫曼编码流程图
第 10 页( 共 26 页)
大学课程设计,论文~
(3). 哈夫曼译码操作模块:
开始
定义变量并初始化
调用哈夫曼译码函数
跳出 ;
图4. 哈夫曼译码流程图 (4). 哈夫曼编码的打印操作模块: