为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 哈夫曼编码和译码

哈夫曼编码和译码

2018-03-25 4页 doc 17KB 13阅读

用户头像

is_482581

暂无简介

举报
哈夫曼编码和译码哈夫曼编码和译码 /* 哈夫曼编码和译码 */ #include "stdio.h" #include "stdlib.h" /* 定义哈夫曼树的类型 */ typedef struct { char letter; int weight; int parent,lchild,rchild; } HTNode,*HuffmanTree; /* 定义哈夫曼编码的类型 */ typedef char **HuffmanCode; /* 选择二个最小值 */ void Select(HuffmanTree ...
哈夫曼编码和译码
哈夫曼编码和译码 /* 哈夫曼编码和译码 */ #include "stdio.h" #include "stdlib.h" /* 定义哈夫曼树的类型 */ typedef struct { char letter; int weight; int parent,lchild,rchild; } HTNode,*HuffmanTree; /* 定义哈夫曼编码的类型 */ typedef char **HuffmanCode; /* 选择二个最小值 */ void Select(HuffmanTree HT,int n,int *s1,int *s2) {int i,j,k; for(i=1; i<=n; i++) if (HT[i].parent == 0) { *s1=i; break; } for(j=i+1; j<=n; j++) if (HT[j].parent == 0) { *s2=j; break; } if (HT[i].weight > HT[j].weight) { *s1=j; *s2=i; } for (k=j+1; k<=n; k++) if (HT[k].parent==0 && HT[k].weightparent = NULL; p->letter = *zi; p->lchild = NULL; p->rchild = NULL; p->weight = *w;} for(;i<=m;++i,++p) { p->weight=0; p->parent=0; p->lchild=0; p->rchild=0;} for(i=n+1;i<=m;++i) { Select(*HT,i-1,&s1,&s2); (*HT)[s1].parent=i; (*HT)[s2].parent=i; (*HT)[i].lchild=s1; (*HT)[i].rchild=s2; (*HT)[i].weight=(*HT)[s1].weight+(*HT)[s2].weight;} /* huffman编码 */ *HC=(HuffmanCode)malloc((n+1)*sizeof(char *)); cd=(char*)malloc(n*sizeof(char)); cd[n-1]='\0'; for(i=1;i<=n;++i) {Istart = n - 1; for(c=i,f=(*HT)[i].parent; f!=0; c=f,f=(*HT)[f].parent) if ((*HT)[f].lchild == c) cd[--Istart] = '0'; else cd[--Istart] = '1'; (*HC)[i] = (char *)malloc((n-Istart)*sizeof(char)); strcpy((*HC)[i], &cd[Istart]); } free(cd); } /* 主函数 */ void main() { HuffmanTree HT; HuffmanCode HC; int i,n,w[100]; char z; char zi[10]={'A','B','C','D','E','F','G','H','I'}; printf("\nInput NodeNum:"); scanf("%d",&n); for(i=0;i
/
本文档为【哈夫曼编码和译码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索