ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:19.31KB ,
资源ID:8485450      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8485450.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(参考文档哈夫曼编码器word范文模板 14页.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

参考文档哈夫曼编码器word范文模板 14页.docx

1、参考文档哈夫曼编码器word范文模板 14页本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!= 本文为word格式,下载后可方便编辑和修改! = 哈夫曼编码器篇一:哈夫曼编码器-源代码#include #include #include typedef structchar data;int weight;int parent;int lchild;int rchild;HTNode;HTNode ht30;typedef structchar cd30;int start;HCode;HCode hcd30;void CreateHT( HTNode

2、 ht , int n ) int i , k , lnode, rnode ;int min1 , min2 ;for ( i = 0 ; i 2*n-1 ; i+ )hti.parent = hti.lchild = hti.rchild = 0;for ( i = n ; i 2*n-1 ; i+ )min1 = min2 = 32767;lnode = rnode = 0;for ( k=0 ; k = i-1; k+)if ( htk.parent = 0)if (htk.weight min1)min2 = min1;min1 = htk.weight;rnode = lnode;

3、lnode = k;else if ( htk.weight min2)min2 = htk.weight;rnode = k;htlnode.parent = i; htrnode.parent = i; hti.weight = htlnode.weight + htrnode.weight; hti.lchild = lnode; hti.rchild = rnode; void CreateHCode( HTNode ht , HCode hcd , int n ) int i , f , c;HCode hc; for( i = 0 ; i n; i+) hc.start = n;

4、c = i; f = hti.parent; while (f != 0) if( htf.lchild = c) hc.cdhc.start- = 0; else hc.cdhc.start- = 1; c=f ; f=htf.parent; hc.start+; hcdi = hc; void CodeInput(int n,HTNode ht) int i; char ch30; scanf( %s , ch ); for ( i=0 ; in ; i+ ) scanf( %ld , &hti.weight ); printf(#- n); void CodeOutput( int n

5、, HCode hcd ) int i , j ; printf ( 所有字符的哈弗曼编码为 : );for ( i = 0 ; i n ; i+ )for( j=hcdi.start ; j=n ; j+ )printf( %lc , hcdi.cdj );printf(n);for ( i=0 ; in ; i+ )printf( 序号%d : , i );for( j = hcdi.start ; j = n ; j+ )printf( %lc , hcdi.cdj );printf( n );void save( int n )int i ;FILE *fp;if( ( fp = fo

6、pen ( c:data.txt , w ) ) = NULLprintf( cant open this file! ) ;exit(0) ;elsefor ( i = 1 ; i = n ; i+ )fprintf( fp , %ld , hti.weight );printf( You have saved it successful !);fclose (fp) ;void main() int num ;)char flag =y;while( flag = y | flag = Y )system( cls );printf( # n);printf( 欢迎使用哈夫曼编码系统n )

7、;printf( # n);printf(# 1. 生成哈夫曼树#n);printf(# 2. 哈夫曼编码 # n);printf( #3.哈夫曼权值存储 # n);printf( # 4. 退出#n);printf( #n);printf( 请选择操作类型 ( 1 - 4 ) : );scanf( %d , &num );printf(# n);switch(num)case 1 :int n , i ;printf( 请输入要输入的字符数量n为: );if(scanf( %ld, &n )&(n!=0)printf(n 请输入 %d 个字符和 %d 个对应权值 n在此输入: , n , n

8、 );CodeInput( n , ht );CreateHT( ht , n );printf( 对应的权值为: n);for( i = 0 ; i n ; i+ )printf( %d : %ld , i , hti.weight );if(i+1) % 4 = 0)printf(n);printf(n#- n); break;case 2 :CreateHCode( ht , hcd , n );CodeOutput( n , hcd );printf(#-); break;case 3 :save(n);printf(#); break; case 4 :printf(# *感谢使用本

9、程序* # n ); exit(1); printf(#); break; default :printf( Error ! You must put the number between ); printf(n#n); printf(n 继续 或 退出 (y or n) : ); getchar() ; flag=getchar(); 篇二:哈夫曼编码器的实现课程设计 实验报告 -哈夫曼编码器的实现系别:电技电信 班级: 姓名: 学号:一、课程设计名称:哈夫曼编码器 二、使用工具软件:Microsoft visual C+ 三、课程设计内容简介 (1)源程序#include #include

10、 #include #define MAX 99char chaMAX,strMAX; char hcMAX-1MAX;int s1,s2; /设置全局变量,以便在select(函数)中返回两个变量typedef struct /huffman树存储结构 unsigned int weight;/权值字符出现的频率 int lchild,rchild,parent; huftree;void select(huftree tree,int k) /找寻parent为0,权最小的两个节点int i;for (i=1;i=k & treei.parent!=0 ;i+); s1=i;for (i=

11、1;i=k;i+)if (treei.parent=0 & treei.weighttrees1.weight) s1=i;for (i=1; i=k ; i+)if (treei.parent=0 & i!=s1) break; s2=i;for (i=1;i=k;i+) if ( treei.parent=0 & i!=s1 &treei.weighttrees2.weight) s2=i;void huffman(huftree tree,int *w,int n) /生成huffman树 int m,i;if (n=1) return; m=2*n-1;for (i=1;i=n;i+)

12、/将各个字符的频率权值作为森林中的每一棵子树 treei.weight=wi; treei.parent=0;treei.lchild=0; treei.rchild=0; for (i=n+1;i=m;i+) treei.weight=0;treei.parent=0;treei.lchild=0;treei.rchild=0; for (i=n+1;i=m;i+) select(tree, i-1);trees1.parent=i; trees2.parent=i; treei.lchild=s1;treei.rchild=s2;treei.weight =trees1. weight+

13、trees2.weight; void huffmancode(huftree tree,char code,int n)/标记哈夫曼编码int start,c,i,f; coden-1=0;cout各字符的哈夫曼编码为:endl; for(i=1;i=n;i+)start=n-1;for(c=i,f=treei.parent;f!=0;c=f,f=treef.parent) if(treef.lchild=c)code-start=0; else code-start=1; strcpy(hci,&codestart);coutchai的哈夫曼编码为:hci endl; void tohuf

14、fmancode(int n)/将您从键盘上输入的字符转变为对应的哈夫曼编码int i=0,j;coutendl输入的字符串转化为哈夫曼编码为:endl;for (;stri!=0;i+) j=0;for(;stri!=chaj&j=n;) j+; if (j=n) couthcj; coutendl; void decode(char ch,huftree tree,int n)/根据输入的01代码按所得的哈夫曼编码箅到对应的字符int i,j,m;char b; m=2*n-1; i=m;cout请输入二进值数:b;cout解码后的字符串为: endl; while(b!=n)/遇到回车时

15、,结束 if(b=0)i=treei.lchild;/按输入的二进制码填入对应的哈夫曼树中,从而得到对应的编码else if(b=1) i=treei.rchild;elsecout输入的值非法,请重新输入: if(treei.lchild=0)coutchib; if(treej.lchild!=0)coutendlERRORendl; coutendlendl; void main() system(color 5e); int i=0,j=1,n;int *w,weightMAX,st199=0; char codeMAX; huftree treeMAX; w=weight;cout

16、* * * * *endl;* * * endl;goto L;篇三:数据结构课程设计:哈夫曼编码器摘 要哈夫曼(huffman)树是一种带权路径长度最小的二叉树,也称最优二叉树,它有着极为广泛的应用。而我今天做的课程设计就是其中的一个应用-哈夫曼编码器。其实它的思想很简单,显示根据输入的权值建立一棵哈夫曼树,然后根据哈夫曼数求出各个叶结点的编码。这样就构成了一个最简单的哈夫曼编码器。 关键词:哈夫曼树编码器 最优二叉树带权路径长度1 课题分析 . 11.1 设计目的 . 11.2 设计要求 . 11.3设计内容 . 12 总体设计与分析 . 321功能函数设计 . 32.1.1建立哈夫曼树

17、. 32.2.2求哈夫曼编码函数 . 32.2.3打印编码函数 . 33 程序说明 . 43.1 结构图 . 44 程序调试 . 54.1 菜单 . 54.2 输入叶结点和权值 . 64.3 输出哈夫曼编码 . 75 设计问题 . 85.1存入文件 . 85.1.1问题1 . 85.1.2问题2 . 86 小结 . 9参考文献 . 10源代码 . 111 课题分析在当今信息爆炸时代,如何采用有效的数据压缩技术节省数据文件的存储空间和计算机网络的传送时间已越来越引起人们的重视,哈夫曼编码正是一种应用广泛且非常有效的数据压缩技术。哈夫曼编码是一种编码方式,以哈夫曼树即最优二叉树,带权路径长度最小的二叉树,经常应用于数据压缩。哈夫曼编码使用一张特殊的编码表将源字符(例如某文件中的一个符号)进行编码。这张编码表的特殊之处在于,它是根据每一个源字符出现的估算概率而建立起来的(出现概率高的字符使用较短的编码,反之出现概率低的则使用较长的编码,这便使编码之后的字符串的平均期望长度降低,从而达到无损压缩数据的目的)。赫夫曼编码的应用很广泛,利用哈夫曼树求得的用于通信的二进制编码称为哈夫曼编码。树中从根到每个叶子都有一条路径,对路径上的各分支约定:指向左子树的分支表示“0”码,指向右子树的分支表示“1”码,取每条路径上的“0”或“1”的序列作为

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1