数据结构哈夫曼编码

数据结构哈夫曼编码

ID:16132842

大小:27.00 KB

页数:4页

时间:2018-08-08

数据结构哈夫曼编码_第1页
数据结构哈夫曼编码_第2页
数据结构哈夫曼编码_第3页
数据结构哈夫曼编码_第4页
资源描述:

《数据结构哈夫曼编码》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Main.c文件如下#include#include#include#include"Haffman.h"#defineMaxBit100voidmain(void){Code*d;inti,j,n=26,m,weight[26]={0};charc,a=97;FILE*fp;//文本文件指针if((fp=fopen("data.txt","r"))==NULL){printf("无法打开此文件");exit(0);//中止程序}printf("待压

2、缩的英文文本文件为:");while(!feof(fp))//当扫描文件内容没有结束时{//读取字符并统计每个字符次数c=fgetc(fp);putchar(c);if(c>='a'

3、

4、c<='z');c=c-32;for(i=65;i<=90;i++)if(c==i)weight[i-65]++;}fclose(fp);HaffNode*myHaffTree=(HaffNode*)malloc(sizeof(HaffNode)*(2*n-1));Code*myHaffCode=(Code*)malloc(

5、sizeof(Code)*n);Haffman(weight,n,myHaffTree);HaffmanCode(myHaffTree,n,myHaffCode);for(m=0;m

6、ndefHaffman_H_INCLUDED#defineHaffman_H_INCLUDED#defineMaxN300#defineMaxValue10000typedefstruct{intweight;//权值intflag;//标记intparent;//双亲结点下标intleftChild;//左孩子下标intrightChild;//右孩子下标}HaffNode;//哈夫曼树的结点结构typedefstruct{intbit[MaxN];//数组intstart;//编码的起始下标intweigh

7、t;//字符的权值}Code;//哈弗曼编码的结构voidHaffman(intweight[],intn,HaffNodehaffTree[])//建立叶节点个数为n,权值数组为weight的哈弗曼树haffTree{inti,j,m1,m2,x1,x2;//哈夫曼树haffTree初始化,n个叶节点的二叉树共有2n-1个结点for(i=0;i<2*n-1;i++){if(i

8、.parent=-1;haffTree[i].flag=0;haffTree[i].leftChild=-1;haffTree[i].rightChild=-1;}//构造哈弗曼树的n-1个非叶节点for(i=0;i

9、;x1=j;}elseif((haffTree[j].weight

10、eight;haffTree[n+i].leftChild=x1;haffTree[n+i].rightChild=x2;}}voidHaffmanCode(HaffNodehaffTree[],intn,CodehaffCode[])//由n个结点的哈夫曼树构造哈弗曼编码{Code*cd=(Code*)malloc(sizeof(Code));inti,j,child,parent;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。