




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include#include#include#includeusing namespace std;char a100; /字符数组int b100; /字符个数double p_a100; /字符概率数组int sum=0; /字符总数/判断当前字符temp是否已出现过bool search(char temp,char a,int m,int n)/m为数组a的元素总个数,即100;n为当前数组a中存放的字符种类的个数int i=0;while(in)if(ai=temp) return true;else i+;return false;/求各个字符的个数,放在数组b中void read_file( string file_name = test_data.txt ) int k=0; ifstream file( file_name.c_str() ); /将string转化为char数组 char temp; if ( file.is_open() = true ) /检查文件是否打开 while ( file.peek() != EOF ) / 从文件中读取一个字符,但该字符并未从输入流中删除 file.get( temp ); / 从文件读入一个字符并把它存储在temp sum+; /统计出现的字符总数 if(search(temp,a,100,k) for(int i=0;ik;i+) if(temp=ai) bi+; break; else ak=temp; bk+; k+; file.close(); / 关闭文件 int main() for(int i=0;i100;i+) ai=; bi=0; string add=C:input.txt ; read_file(add); coutsumendl; for(int p=0;p100;p+) if(ap!=) p_ap=(double)bp)/(double)sum); else p_ap=0.0; p=0; while(p100 &ap!=) coutap p_apendl; p+; return 0;、#include#include#include#includeusing namespace std;/char a100; /字符数组int b100; /字符个数double p_a100; /字符概率数组int sum=0; /字符总数/判断当前字符temp是否已出现过bool search(char temp,char a,int m,int n)/m为数组a的元素总个数,即100;n为当前数组a中存放的字符种类的个数int i=0;while(in)if(ai=temp) return true;else i+;return false;/求各个字符的个数,放在数组b中void read_file( string file_name = test_data.txt ) int k=0; ifstream file( file_name.c_str() ); /将string转化为char数组 char temp; if ( file.is_open() = true ) /检查文件是否打开 while ( file.peek() != EOF ) / 从文件中读取一个字符,但该字符并未从输入流中删除 file.get( temp ); / 从文件读入一个字符并把它存储在temp sum+; /统计出现的字符总数 if(search(temp,a,100,k) for(int i=0;ik;i+) if(temp=ai) bi+; break; else ak=temp; bk+; k+; file.close(); / 关闭文件 /typedef struct char data; int weight; int parent ,lchild,rchild;HTNode,*HuffmanTree;/动态分配数组存储哈夫曼树 typedef char * HuffmanCode;/ 动态分配数组存储哈夫曼编码表 / 返回i个节点中权值最小的树的根节点序号int min (HuffmanTree t, int i) int j,flag; int k=100; for(j=1;j=i;j+) if(tj.weight=k)&(tj.parent=0) k=tj.weight,flag=j; tflag.parent=1; return flag; /在i个结点中选择2个权值最小的树的根结点序号,s1为其中序号小的那个void select (HuffmanTree t,int i,int &s1,int &s2) s1=min(t,i); s2=min(t,i);/w存放n个字符的权值,构造哈夫曼树HT,并求出n个字符的哈弗夫编码HCvoid HuffmanCoding (HuffmanTree &HT,HuffmanCode &HC,int *w,int n,char *wx,int nx) int m,i,s1,s2; int c,cdlen; HuffmanTree p; char *cd; if(n=1) return ; m=2*n-1; HT=(HuffmanTree)malloc(m+1)*sizeof(HTNode);/0号单元未用 for(p=HT+1,i=1;i=n;+i,+p,+w) (*p).weight=*w; (*p).data=*wx; (*p).parent=0; (*p).lchild=0; (*p).rchild=0; for(;i=m;+i,+p) (*p).parent=0; for(i=n+1;i=m;+i)/见哈夫曼树 select(HT,i-1,s1,s2); HTs1.parent=HTs2.parent=i; HTi.lchild=s1; HTi.rchild=s2; HTi.weight=HTs1.weight+HTs2.weight; HC=(HuffmanCode)malloc(n+1)*sizeof(char*); cd=(char*)malloc(n*sizeof(char); c=m; cdlen=0;/记录一个码字中码的个数 for(i=1;i=m;+i) HTi.weight=0;/遍历哈弗曼树时用作结点状态标志 while (c) if(HTc.weight=0)/说明没有遍历过 HTc.weight=1; if(HTc.lchild!=0)/有左孩子 c=HTc.lchild; cdcdlen+=0; else if(HTc.rchild=0)/没有左孩子,也没有右孩子 HCc=(char*)malloc(cdlen+1)*sizeof(char);/结束,多一个单元来放结束符号 cdcdlen=0; strcpy(HCc,cd); else if(HTc.weight=1)/遍历过一次的结点 HTc.weight=2; if(HTc.rchild!=0)/有左右孩子 c=HTc.rchild; cdcdlen+=1; else HTc.weight=0; c=HTc.parent; -cdlen; free(cd);/int main()int countx=0;/字符种类的个数 for(int i=0;i100;i+) ai=; bi=0; string add=C:input.txt ; read_file(add); cout字符总个数:; coutsumendl; for(int p=0;p100;p+) if(ap!=) countx+; p_ap=(double)bp)/(double)sum); else p_ap=0.0; cout字符种类:countxendl; p=0; while(p100 &ap!=) coutap p_apendl; p+; / int count=0; HuffmanTree HT; HuffmanCode HC; int *w,n;char *wx; n=countx;/字符种类个数 coutendl; w=(int *)malloc(n*sizeof(int); wx=(char *)malloc(n*sizeof(char); for(i=0;i=n-1;i+) wi=bi;/存放着权值wxi=ai; H
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 17811-2025动物源性蛋白质饲料胃蛋白酶消化率的测定过滤法
- 2025年安全生产法规机关测试题集
- 2025年文化艺术行业财务岗位面试预测题及解析
- 2025年村级儿童之家保洁员招聘面试常见问题及参考答案
- 劳动合同协议范本示例
- 2025年安全员安全知识考核题解
- 2025年汽车销售顾问销售技巧测评试题及答案解析
- 2025年农业技术推广员专业知识能力测评试卷及答案解析
- 2025年景观生态规划师资格考试试题及答案解析
- 2025年职业安全卫生培训题与答案解析
- 衡水志臻小升初数学真题试卷
- 水利水电工程教学课件
- 宠物拍摄技巧培训课件
- 2025年人教版七年级英语下册期末复习:阅读理解30篇(带参考答案详解)
- 2025年专业技术人员继续教育公需科目考试题及答案
- 加油站全员安全生产责任制制度
- 磁粉检测培训课件
- 园区招聘活动方案
- 罐式专用运输管理制度
- 2025届上海市金山区高三下学期二模英语试题(解析版)
- 【生物 安徽版】2025年普通高等学校招生选择性考试(原卷版)
评论
0/150
提交评论