- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5哈夫曼编码和译码的算法设计与实现
实验名称哈夫曼编码和译码的算法设计与实现实验方案实验成绩实验日期实 验 室信息系统设计与仿真室I实验操作实验台号班级姓名通信一班 杨林实验结果 学号 14112300954 序号 27
实验目的
1、掌握哈夫曼编码的二叉树结构表示方法;
2、编程实现哈夫曼编码译码器;
3、掌握贪心算法的设计策略。
实验任务
① 从文件中读取数据,构建哈夫曼树;
② 利用哈夫曼树,对输入明文进行哈夫曼编码;
③ 利用哈夫曼树,对输入编码译码为明文。
实验设计方案
结构体设计
Huffman树:包括字符,权,父亲下标,左孩子下标,右孩子下标
#define N 29 //26个小写字母,逗号,句号和空格字符.
struct treenode{ //静态链表
char c; //char
int w; //weight
int f; //father
int l; //left child index
int r; //right child index
};
struct treenode htree[2*N-1];
自定义函数设计
函数原型声明
void input(); //读取文件字符、权值数据
void huffman(); //建立huffman树
void getcode(int i, char *str); //得到单个字符的huffman编码
void encode(char ch); //将明文进行huffman编码
void decode(char *str); //将huffman编码译为明文
② 读取文件字符、权值数据
void input()
{
int i;
char c;
int f;
freopen(in.txt,r,stdin);
for(i=0;iN;i++)
{
c=getchar(); //接收字符
scanf(%d,f); //接收权值
getchar(); //接收回车
ht[i].c=c;
ht[i].w=f;
ht[i].l=ht[i].f=ht[i].r=-1; //初始化父亲、左右孩子下标
}
freopen( CON, r, stdin);
}
③建立huffman树
//使用贪心法建立huffman树,每次选择权值最小的根结点
void huffman()
{
void huffman()
{
int j,k,n;
input();
j=0;
k=N;
for(n=N;n2*N-1;n++){ //建立huffman树,共合并N-1次
int r=0,s=0;
ht[n].l=ht[n].f=ht[n].r=-1;
while(r2){ //选择两个最小的权值结点
if((ht[k].w==0 || ht[k].wht[j].w) jN){
s+=ht[j].w;
if(r==0) ht[n].l = j; //修改父亲、孩子下标
else ht[n].r=j;
ht[j].f=n;
j++;
}
else{
s+=ht[k].w;
if(r==0) ht[n].l = k; //修改父亲、孩子下标
else ht[n].r=k;
ht[k].f=n;
k++;
}
r++;
}
ht[n].w=s; //修改权值
}
}
④ 根据字符下标找到字符的huffman编码
//根据字符所在的下标,从叶子结点往上有哪些信誉好的足球投注网站到根节点,然后逆置得到该字符的huffman编码
void getcode(int i, char *str){
int n,j,l=0;
for(n=i;ht[n].f!=-1;n=ht[n].f){ //沿着父亲往上有哪些信誉好的足球投注网站
int m=ht[n].f;
if(n==ht[m].l)
str[l++]=0; //左孩子记为0
else
str[l++]=1; //右孩子记为1
}
for(j=0;j=(l-1)/2;j++){ //将编码逆置
您可能关注的文档
- 324832m连续梁施工方案.doc
- 30001-2005产品零部件图号编制规范.doc
- 33大艺哥MAX周光权案例试题集.doc
- 33例非小细胞肺癌的内科治疗方法探讨.doc
- 33mT梁预制技术研究.doc
- 34----塑料橡胶纤维同步练习---PRINT.doc
- 342施工组织计划技术.doc
- 34《通电导线在磁场中受到的力》测试.doc
- 34年考研英语真题及答案(2013年1997年).doc
- 3503J4121管道焊接接头射线检测比例确认表(一).doc
- 河南省郑州市第一中学2017-2018学年高一下学期周测物理试题(325)扫描版含答案.doc
- 山西省怀仁县第一中学2017-2018学年高二下学期第一次月考生物试题扫描版.doc
- 河南省六市高三下学期第一次联考试题(3月)理科综合扫描版含答案.doc
- 四川省高三全国Ⅲ卷冲刺演练(一)文综地理试卷扫描版含答案.doc
- 河南省洛阳市高三第二次统考文综试卷扫描版含答案.doc
- 甘肃省靖远县高三下学期第二次联考理科综合试题扫描版含答案.doc
- 问题导学法在办公场景中的实施策略及效果评估.docx
- 退休后的个人品牌打造与传播策略.docx
- 问题解决在办公流程优化中的应用.docx
- 问题导向的办公环境创新设计.docx
最近下载
- 2023北京清华附中高三三模英语(教师版).pdf VIP
- 钢结构工程投标书范本1.doc
- 辅警招聘公安基础知识考试题库及答案(范文) .docx VIP
- ANSI ESD S20.20-2021(完整中文版本).docx
- 辅警招聘公安基础知识考试题库及答案【推荐】.docx VIP
- 苏教版六年级下册数学第三单元第1课《解决问题的策略(1)》课件(公开课).pptx VIP
- 沪教牛津版初中英语全册单词.pdf VIP
- 2024年天津市滨海新区中考一模英语试题(解析版).pdf VIP
- 幼儿园小班科学《春天来了》课件 优质课件.pptx VIP
- 湘科版2017科学四年级下册5.2控制电路的通断 课件.pptx
文档评论(0)