哈夫曼编码及译码.doc_第1页
哈夫曼编码及译码.doc_第2页
哈夫曼编码及译码.doc_第3页
哈夫曼编码及译码.doc_第4页
哈夫曼编码及译码.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

哈夫曼编码及译码#include#include#include#includeusing namespace std;struct HuffmanNodeint parent;int weight;int lchild,rchild;class HuffmanTreepublic:void CountHuffman();void CodeHuffman();void DecodeHuffman();huffmanTree();private:struct HuffmanNode *Node;char *data;int leaf;int vv;char a100;int q100100;HuffmanTree:huffmanTree()Node=NULL;data=NULL;leaf=NULL;vv=NULL;void HuffmanTree:CountHuffman() /输入字符并统计字符数目int count100;for(int j=1;j=26;j+)countj=0;int c;char x;couta;c=strlen(a);for(int i=0;ic;i+)x=(*(a+i);for(int zz=1;zz=26;zz+)if(x=a+zz-1|x=A+zz-1)countzz+;int k=0;for(i=1;i=26;i+)if(counti!=0)k+;leaf=k;int pos1,pos2,min1=1000,min2=1000;Node=new HuffmanNode2*leaf-1; data=new charleaf;int f=0;int g=0;for(i=1;i=26;i+)if(counti!=0)dataf=a+i-1;Nodef.weight=counti; g=g+counti;Nodef.parent=-1; Nodef.lchild=-1; Nodef.rchild=-1;f+;for(i=leaf;i2*leaf-1;i+)for(j=0;ji;j+)if(Nodej.parent=-1&Nodej.weight=min1)min1=Nodej.weight;pos1=j;Nodepos1.parent=i;Nodei.lchild=pos1;for(j=0;ji;j+)if(Nodej.parent=-1&Nodej.weightmin2)min2=Nodej.weight;pos2=j;Nodepos2.parent=i;Nodei.rchild=pos2;Nodei.parent=-1;Nodei.weight=Nodepos1.weight+Nodepos2.weight;min1=1000;min2=1000;if(Nodei.weight=g)vv=i;cout字母及字母数量统计:endl;for(i=0;ileaf;i+)coutNodei.weight;if(ileaf)coutdatai;cout ;coutendl;void HuffmanTree:CodeHuffman() /编码int A100100;int d=0,ac=0,b,s,v,k=0,c;char x;cout字母所对应的编码:endl;for(int i=0;i0)ac-;if(Nodev.lchild=Aiac)v=Aiac;Aiac=0;else if(Nodev.rchild=Aiac)v=Aiac;Aiac=1;coutdatai=0;j-)coutAij;qid=Aij;d+;qid=9;ac=0;d=0;coutendl;c=strlen(a);couta;cout编码为:endl;for(i=0;ic;i+)x=(*(a+i);for(int j=0;jleaf;j+)if(x=dataj)while(qjk9)coutqjk;k+;k=0;coutendl;void HuffmanTree:DecodeHuffman() /译码int p100;int c,t=0,j=0;char x;char b100;coutb;c=strlen(b);cout译码为:;for(int i=0;ic;i+)x=(*(b+i);if(x=0)pt=0;t+;if(x=1)pt=1;t+;for(int k=0;kleaf;k+)while(qkj!=9)j+;if(t=j)int y=0;while(py=qky&y=j)y+;if(y=j)coutdatak;t=0;j=0;coutendl;void main()HuffmanTree t;while(1)cout哈夫曼编码及译码小程序:endl;cout请选择:endl;cout1、输入字符串并统计字符的种

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论