



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、赫夫曼树:代码:#include<stdio.h>#include<iostream>using namespace std;#include<malloc.h>#include<stdlib.h>#include<limits.h>#include<string.h>typedef structunsigned int weight;unsigned int parent,lchild,rchild; htnode,*huffmant ree;typedef char *huffmancode;int mini (huf
2、fmantree t,int i)int j,flag;unsigned int k=uint_max;for(j=1 ;jv=i;j+)if(tj.weight<k&&tj.parer)t=o)k=tj.weight,flag=j;tflag.parent=1;return flag;void select(huffmantree t,int i,int *s1 ,int *s2) int j;*s1=min1 (t,i);*s2=min1(t,i);if(*s1>*s2)*s1=*s2;*s2=j;void huffmancoding(huffmantree *
3、ht,huffmancode *hc,int *w,int n) int m,i,s1 ,s2,start;unsigned c,f;huffmantree p;char *cd;if(n<=1)return;m=2*n-1;*ht=(huffmantree)malloc(m4-1 )*sizeof(htnode);for(p=*ht+1 ,i=1 ;iv=n;+i,+p,+w) (*p).weight=*w;(*p).parent=o;(*p).lchild=o;(*p).rchild=o;for(;iv=m;+i,+p)(*p).parent=o;for(i=n+1 ;iv=m;+i
4、)select(*ht,i-1,&s1 ,&s2);(*ht)s1.parent=(*ht)s2.parent=i;(*ht)i.lchild=s1;(*ht)i.rchild=s2;(*ht)i.weight=(*ht)s1.weight+(*ht)s2.weight;*hc=(huffmancode)malloc(n4-1 )*sizeof(char*);cd=(char*)malloc(n*sizeof(char);cdn-1='0'for(i=1 ;iv=n;i+) start=n-1;for(c=i,t=(*ht)i.parent;f!=0;c=f,f
5、=(*ht)f.parent)if(*ht)f.lchild=c)cdstart=*o*;elsecdstart='r;(*hc)i=(char*)malloc(n-start)*sizeof(char);strcpy (* hc) i, &cd start);free(cd); void main() 主程序huffmantree ht;huffmancode hc;int i,j=o,w27=186,64,13,22,32,103,21,15,47,57,1,5,32,20,57,63,15,1,48,51,80,23,8,18,1,16,1;huffmancoding(&
6、amp;ht,&h c,w,27);printf(”对应的赫夫曼编码:n”);char c='a'putchar(* ,);cout«, ,«hc1«, '«'for(i=2;iv=27;i+)putchar(c+4-);cout«f ,«hci«, *«if(j%4=0) cout«endl;printf(hn输入要翻译的句子:”);char s100;gets(s);puts(s);while(sj)if(sj=* ) cout«hc1;else co
7、ut«hcsj-,a,+2;j+;cout«endl;运行结果:对应的赫夫曼编码:110 a 1010b 100100c 00010d 10110e 010 f 111110g 100101h 000010110j 1111011100k111101101 10111nmilln 0111o1000p 100110q11110111011* 0010s0011t 1110u00011v 1111010w111100x 1111011110y100111z 1111011111输要翻译的®子:this programis ny favoritethis program isny favorite11100000011000111101001100010100
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 立体停车场安全协议合同
- 门窗升级维护合同协议
- 陶瓷品代理合同协议
- 门窗甲供材料合同协议
- 二五年3月份虚拟植物生长模拟拍摄合同数据归属条款
- 隔音罩合同协议
- 长期买卖居间合同协议
- 鞋厂大底采购合同协议
- 露营免责协议合同协议
- 青铜砂轮采购合同协议
- 感悟考古智慧树知到期末考试答案章节答案2024年北京大学
- 2025陕西省高二学业水平考试数学模拟试卷试题(含答案详解)
- DL-T5142-2012火力发电厂除灰设计技术规程
- 2024年全国青少年航天创新大赛航天知识竞赛试题
- DB11∕2075-2022 建筑工程减隔震技术规程
- 铅锌矿的冶炼技术进展与设备改进
- 煤矿劳动组织管理培训课件
- 仓储绩效考核实施细则仓库人员绩效考核内容与评分标准
- 混凝土拌合物凝结时间自动计算记录
- 2022睡眠医学中心建设指南
- 地磅允许误差
评论
0/150
提交评论