- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
题目哈夫曼(Huffman)编码译码器
题目:哈夫曼(Huffman)编码/译码器
班级:试0101 姓名:吴新华 学号 完成日期:2003-5-27
一、需求分析
1.问题描述:利用哈夫曼编码可以大大提高通信利用率,缩短传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传输数据预先编码,在接收端将传来的数据译码(复原)。对于双工信道(即可以双向传输信息的通道),每端都要有一个完整的编/译码系统。试为这样的信息收发站,编写一个哈夫曼编/译码系统。
2.基本要求
(1)初始化:从终端读入字符集大小n,以及n个字符和n个权植,建立哈夫曼树。
(2)编 码:用建立好的哈夫曼数对字符串进行编码,保存结果。
(3)译 码:利用以建好的哈夫曼数对正文进行译码。
3.测试数据
二、概要设计
1.抽象数据类型图的定义如下:
ADT Graph
{
数据对象V:V是具有相同数据特性的数据元素的集合,称为顶点集。
数据关系R:Vi∈V
Wi是Vi(i=0,1,2… n)的权值,设以Vi为树叶构成一棵树,Li为结点Vi的路径长度,则应该满足一下关系式:WPL=∑Wk*Lk(树的带权路径之和);且WPL的值最小。
基本操作:
void huffcoding(hufftree ht,huffcode hc)
初始条件:以定义好ht和hc
操作结果:生成一棵哈夫曼树并生成编码数组
void hufcodebirth(hufftree ht,huffcode hc char *str)
初始条件:哈夫曼树ht和哈夫曼编码数组hc已经存在可以直接应用
操作结果:把str中所存的字符串翻译成哈夫曼编码串
void huffexplain(hufftree ht, huffcode hc char *str)
初始条件:哈夫曼树ht和哈夫曼编码数组hc已经存在可以直接应用
操作结果:把str中所存的哈夫曼编码串翻译成字符
int inhufcode(huffcode hc ,char *str)
初始条件:哈夫曼编码数组已存在可以直接调用,str是编码串。
操作结果:判断是否有字符的编码与str编码串相同,返回相应字符的地址。
}ADT Graph2.主程序
void main()
{
变量定义及初始化;
数据输入:
函数的调用;
}
3.本程序只有两个模块,调用关系简单
三、详细设计
数据结构定义
typedef struct {
char data; //数据域存放结点的数据
int parent; //父亲结点
int lchild ; //左孩子
int rchild ;//右孩子
int weight; //结点的权值
}huffnode,*hufftree;/*数据类型*/
typedef char * *huffcode;/*定义动态哈夫曼编码数组,用于存放编码*/
void huffcoding(hufftree ht,huffcode hc)
{/*构造哈夫曼树并编码把结果分别放在ht 和hc。本函数包括三个部分:
结点的数据输入;
构造哈夫曼树ht;
构造哈夫曼编码hc。*/
cinn;//输入结点总数
ht=(hufftree)malloc(2*n*sizeof(huffnode));/*为ht分配内存*/
for(i=1;i=n;i++)/*数据的输入*/
{
cinht[i].data; /*输入数据,字符类型*/
cinht[i].weight;/*输入结点权值*/
}
for(i=1;i2*n;i++)/*初始化数据结构中的父亲、左右孩子域的数据*/
ht[i].parent=ht[i].lchild=ht[i].rchild=0;
for(i=n+1;i=2*n-1;i++)
{/*此for 循环求两个权值最小的结点的地址,用s1,s2返回*/
int m1,m2,s1,s2; m1=m2=9999;s1=s2=0;/*m1和m2是临时变量存放权值*/
for(int k=1;k=i-1;k++)
if(ht[k].parent==0)//结点未曾被访问
if (ht[k].weightm1)
{
m2=m1; s2=s1; /*将m2的值定在不比m1大*/
m1=ht[k].weight; s1=k;
}
else if (ht[k].weightm2)
{
m2=ht[k].weight;s2=k;
}//完成求s1和s2
/*利用s1,s2为左右孩子建立一新的二叉子数*/
ht[s1].parent=
您可能关注的文档
- 徕卡探地雷达DS2000介绍.PDF
- 成都航模巧用Moldow让变形无处遁形.PDF
- 徕卡DNA03DNA10.PDF
- 徕卡探地雷达DS2000商务介绍PPT.PDF
- 折后的磁铁会出现什么现象.docx
- 拉线位移传感器选型.PDF
- 数码相机发明人谈柯达死因.PDF
- 支持向量机算法在激光诱导击穿光谱技术塑料识别中的应用研.PDF
- 无创双水平呼吸机技术参数及配置清单.PDF
- 旋钮式风机盘管温控器—TROOM-7.PDF
- 熊去氧胆酸片临床应用考核试题.pdf
- 2025-2026学年初中数学华东师大版2024七年级下册-华东师大版2024教学设计合集.docx
- 2025-2026学年初中信息技术(信息科技)八年级上册桂科版(2024)教学设计合集.docx
- 2025年留学服务行业海外院校合作模式创新与发展趋势报告.docx
- 远程照护系统技术标准2025年制定与智慧健康管理的融合发展.docx
- 2025年脑机接口与AI融合在智能医疗影像辅助诊断中的疾病识别研究报告.docx
- 2025年风电复合材料市场分析及未来五到十年发展趋势报告.docx
- 2025年低空经济政策落地,通用航空机场运营模式研究.docx
- 家居用品连锁化发展分析及2025年行业趋势报告.docx
- 2025年跨境电商试验区跨境电商跨境电商跨境电商产业链协同创新与挑战分析.docx
文档评论(0)