- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
哈夫曼编码译码数据结构课程设计王政锐.doc
数据结构课程设计
题目:哈夫曼编码译码 姓名: 专业
目录
一、系统开发的背景
2
TOC \o 1-5 \h \z 二、 系统分析与设计 2
(1) 系统功能要求 2
(2) 设计包含的几个方面 3
HYPERLINK \l bookmark12 \o Current Document \h 三、 详细设计 3
四、 流程图 8
HYPERLINK \l bookmark26 \o Current Document \h 五、 调试结果 10
HYPERLINK \l bookmark36 \o Current Document \h 六、 心得体会 11
七、 附录(源代码) 11
哈夫曼编/译码器系统
一、系统开发的背景
为了提高信道利用率,缩短信息传输时间,降低传输成本,且在
信息发送端通过一个编码系统对待传数据预先编码,在信息接收端将 传來的数据进行译码(复原),因此设计哈夫曼编码/译码器系统。
二、系统分析与设计
(一)系统功能要求:
【任务要求】
1:初始化(Initialization)o从终端读入字符集大小n,以及n个 字符和n个权值,建立哈夫曼树,并将它存于文件hfmTree中。
2:编码(Encoding)o利用以建好的哈夫曼树(如不在内存,则从文 件hfmTree中读入),对文件To Be Tran中的止文进彳亍编码,然后将 结果存入文件CodeFile屮。
3:译码(Decoding)o利用已建好的哈夫曼树将文件Code File中的 代码进行译码,结果存入文件Text File中。
4:印代码文件(Print)o将文件Code File以紧凑格式显示在终端 上,每行50个代码。同时将此字符形式的编码文件写入文件Code Prin 中。
5:印哈夫曼树(Tree Printing)。将已在内存中的哈夫曼树以直观 的方式(树或凹入表形式)显示在终端上,同吋将此字符形式的哈夫 曼树写入文件Tree Print中。
【测试数据】
利用教科书中的数据调试程序。
用下表给出的字符集和频度的实际统计数据建立哈夫曼树,并实现以 下报文的编码和译码:“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
(-)设计包含的几个方面:
哈夫曼树的建立:
哈夫曼树的建立由哈夫曼算法的定义可知,初始森林中共有n棵只含有根结 点的二叉树。算法的第二步是:将当前森林屮的两棵根结点权值最小的二叉树, 合并成一棵新的二叉树;每合并一次,森林中就减少一棵树,产生一个新结点。 显然要进行n—1次合并,所以共产生n—1个新结点,它们都是具有两个孩了的 分支结点。由此可知,最终求得的哈夫曼树中一共有2n — l个结点,其中n个结 点是初始森林的n个孤立结点。并且哈夫曼树中没有度数为1的分支结点。我们 可以利用一个大小为2n-l的一维数组来存储哈夫曼树小的结点。
哈夫曼编码:
要求电文的哈夫曼编码,必须先定义哈夫曼编码类型,根据设计要求和实际 需耍定义的类型如下: typedet struct {
char ch; //存放编码的字符
char bits[N+l] ; //存放编码位串
int len; //编码的长度
} CodeNode; //编码结构体类型
代码文件的译码:
译码的基本思想是:读文件中编码,并与原先生成的哈夫曼编码表比较,遇 到相等时,即取岀其对应的字符存入一个新串中。
三、详细设计
(1)①哈夫曼树的存储结构描述为:
#define N 50 //叶子结点数
#define M 2*N-1 //哈夫曼树中结点总数
typedef stnict {
int weight;
int lchild, rchild, parent; //左右孩子及双亲指针 JHTNode;
typedef HTNode HuffmanTree[M+l];
②哈弗曼树的算法
void CreateHT(HTNode ht[],int n)
int i,k,Inode,mode;
int minl,min2;
for (i=0;i2*n-l;i++)
ht[i].parent=ht[i].lchild=ht[i].rchild=-l;
for (i=n;i2*n-l;i++)
{
minl=min2=32767;
lnode=rnode=-l;
for (k=();k=i-l;k++)
{
if (ht[k].parent==-l)
if (htLk
您可能关注的文档
最近下载
- 《第5课 共同保卫伟大祖国》课件_初中道德与法治_七年级全一册_中华民族大团结.pptx VIP
- h3cloud云学堂故障处理手册.pdf VIP
- 2025-2026学年重庆市巴蜀中学学堂班八年级(上)选拔数学试卷(含答案).pdf VIP
- 第5课 共同保卫伟大祖国 课件中华民族大团结.ppt VIP
- GB50819-2013 油气田集输管道施工规范.pdf VIP
- 沥青混凝土面层工程检验批质量验收记录表.doc VIP
- 人教PEP版四年级英语下册 《Weather》Part A PPT课件(第1课时) .ppt VIP
- 《文化的继承与创新》课件.ppt VIP
- 百冠公司成品仓库仓储货位优化研究.docx
- 2024光伏连接器技术标准.docx VIP
文档评论(0)