欢迎来到天天文库
浏览记录
ID:30818400
大小:139.27 KB
页数:5页
时间:2019-01-03
《构建哈夫曼树及输出哈夫曼代码及算法思想》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、哈夫曼树描述文档思路通过一个arg叩数组存储从test文件中读取字母,然后利用ascal码循环计算每个字母的权值,利用weight[]是否为零,确定叶子节点,节点个数为count,传入到构建哈夫曼树的子程序中,然后利用cd[]数组存储每一个叶了节点的哈夫曼代码•输出代码时,通过与argv[]数组的比对,扫描ht数组,进而读出所有的数据。[HC•“•i«hludr<>tHimliirfr•irvcludrtvprtet«tr・cteMrOt«:i«ttutpjrrnt:UtIcftiltf;“trcftiltf;
2、typrdefstructclurc4(S0):Utd;>HCO4«;••ttrfefctr"『[)”/送仃上糧吃LhlfstrrMin;Mstreaao«t;CMrC;iat*—■・•;〃~L):B、•■・・•tvtw“tTXXVF例:mioueiiiwteio>1MII:imiofittiiwUt13•l«l■letI■limomn:U11IBlII:!!■■:1UI•1I1B1:immTHV1!IS>VIlAHXfUVHIX1ttX#•nia.ra,7*"•厂■⑥・X•…能”iwtchii^iRlermtiwi(W代码#incIude<
3、stdio.h>#include#includetypedefstruet{chardata;intweight;intparent;intichiId;intrchiId;}HTNode;typedefstructcharcd[50];intstart;}HCode;usingnamespacestd;intenter(charargv[])//进行读入操作fstreamin;ofstreamout;charc;intnumber二0;//字母个数置为0in.open("test,txt",ios::in
4、);//打开文件test,txtout.open("code,txt",ios:rune);//打开文件code,txt,如果不存在就新建一个,如果存在就清空if(!in.eof0)in»c;〃从test,txt中读取一个字符存入cprintf("原文本是:");while(!in.eof()){//文件不为空,循环读取一个字符cout«c;//将文件中的内容输出到屏幕上argv[number]=c;//存储c的值到数组number++;out«c;//将c中的字符存入文件code,txt中in»c;//从test,txt中读取一个字符存入
5、c}argv[number]=*Q';printf("");in.close;out.close;//使用完关闭文件return(number);//返回叶子节点数目voidCreateHT(HTNodeht[],intn)inti,j,k,Inode,rnode;doubIemini,min2;for(i=0;i<2*n-1;i++)ht[i].parent=ht[i].IchiId=ht[i].rchild=-1;//置初值for(i二n;i<2*n-1;i卄){min1=min2=32167;Inode=rnode=-1;for(k
6、二0;k<二i-1;k++)if(ht[k].parent==-1)if(ht[k].weight7、t二i;}}voidCreateHcode(HTNodeht[]FHCodehcd[],intn){inti,f,c;HCodehc;for(i=0;i8、ateHT(HTNodeht[],intn);//创建哈夫曼树voidCreateHcode(HTNodeht[],HCodehcd[],intn);
7、t二i;}}voidCreateHcode(HTNodeht[]FHCodehcd[],intn){inti,f,c;HCodehc;for(i=0;i8、ateHT(HTNodeht[],intn);//创建哈夫曼树voidCreateHcode(HTNodeht[],HCodehcd[],intn);
8、ateHT(HTNodeht[],intn);//创建哈夫曼树voidCreateHcode(HTNodeht[],HCodehcd[],intn);
此文档下载收益归作者所有