网站大量收购独家精品文档,联系QQ:2885784924

huffman 算法应用.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
huffman 算法应用

huffman 算法应用 huffman 算法应用2007年06月28日 14:25/***************************************************** * 功能:实现对简单的文本文件压缩 * 原理:huffman编码原理,求得最优树 * 作者:小花朵 * 日期:2006-4-9 * 学院:河南大学计算机与信息工程学院 * Email:zhuweidong8@ ******************************************************/ #includeiostream #includestring //#includefstream //#includestdlib.h //#includeconio.h using namespace std; struct HC_head { unsigned char ch; unsigned int frequency; }; typedef struct { unsigned int weight; unsigned int parent,lchild,rchild; }HTNode,* HuffmanTree; #define uchar unsigned char typedef char** HuffmanCode;//动态分配数组存储哈夫曼代码表 unsigned long file_size; int num_of_char;//统计不同字符的个数 long frequency_count[257];//频率统计 char *DC;//解码后的字符串 string s=;//编码后的字符串 uchar *data;//压缩数据块 HC_head *head;//头信息指针 FILE *ifile, *ofile, *pfile, *qfile; HuffmanTree HT; HuffmanCode HC; char *array1,*array2; ////////////////////////////////////////////////////////////// //**************位操作****************************** char * bittest(uchar num,uchar bit) /*测试某一位*/ { if(numbit0x01==1) return 1; else return 0; } void bitset(uchar num,uchar bit) /*设置某一位*/ { uchar bit_value[]={1,2,4,8,16,32,64,128}; num=num|bit_value[bit]; } //**************清空信息*********************** void clear_frequency_count() { for(int i=0;i257;i++) frequency_count[i]=0; } //*************求编码后的字符串***************** void get_data_size() { unsigned long loop; uchar t; fseek (ifile, 0L, 0);//SEEK_SET=0 文件开始;SEEK_END=2 文件末尾;SEEK_CUR=1 文件当前位置 for (loop = 0; loop file_size; loop++) { t=(uchar)getc(ifile); s+=HC[t+1]; } //coutsendl;//编码后字符串 } //*************压缩用频率统计******************* void get_frequency_count_comp () { register unsigned long loop; fseek (ifile, 0L, 0);//SEEK_SET=0 文件开始;SEEK_END=2 文件末尾;SEEK_CUR=1 文件当前位置 for (loop = 0; loop file_size; loop++) frequency_count[getc(ifile)]++; } //************解压缩用频率统计****************** void get_frequency_count_decomp() { for(long loop = 0; loop num_of_char;lo

文档评论(0)

80019pp + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档