- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
用哈夫曼树实现压缩解压
程序是用 VC++ 编译完成的,可以完成对任意文件的压缩解压 (为 方便寻找,压缩出的文件与待压缩文件在同一文件夹中) ,但压缩文 件夹还不可以, 另外该程序还能打印出压缩时所建立的哈夫曼树及哈 夫曼编码。源代码如下:
#include
#include
#include
#include
typedef struct node
{
long w;
short p,l,r;
}htnode,*htnp;
typedef struct huffman_code
{
unsigned char len;
unsigned char *codestr;
}hufcode;
typedef char **huffmancode;
int initial_files(char *source_filename,FILE **inp,char *obj_filename,FILE **outp);
char *create_filename(char *source_filename,char* obj_filename);
int compress(char *source_filename,char *obj_filename);
long frequency_data(FILE *in,long fre[]);
int search_set(htnp ht,int n,int *s1, int *s2);
int create_hftree(long w[],int n,htnode ht[]);
int encode_hftree(htnp htp,int n,hufcode hc[]);
unsigned char chars_to_bits(const unsigned char chars[8]);
int write_compress_file(FILE *in,FILE *out,htnp ht,hufcode hc[],char* source_filename,long source_filesize);
int decompress(char *source_filename,char *obj_filename);
void get_mini_huffmantree(FILE* in,short mini_ht[][2]);
int write_decompress_file(FILE *in,FILE* mini_ht[][2],long bits_pos,long obj_filesize);
int d_initial_files(char *source_filename,FILE *obj_filename,FILE **outp);
main()
{
int s;
char filename[10];
system(color 3F);
printf(
***************************************\n);
printf( *
*\n);
printf( * 1.—————
out,short**inp,char菜单:压缩——printf(2.-
out,short
**inp,char
菜单:
压缩——
printf(
2.
-解压缩
*\n);
退出printf( * 0.———
退出
———— *\n);
printf( ***************************************\n);
scanf(%d,s);
while(s!=0)
{
getchar();
switch(s)
{
case 1:
puts(请输入待压缩文件路径:);
gets(filename);
compress(filename,NULL);
break;
case 2:
puts(请输入待解压文件路径:);
gets(filename);
decompress(filename,NULL); break;
default :
printf( 指令错误!请重新输入指令: \n);
}
puts( );
printf(
***************************************\n);
printf( * 菜单: *\n);
printf( * 1.——————压缩— ————— *\n);
printf( * 2.————— -解压缩—
———— - *\n);
printf( * 0.——————退出—
————— *\n);
printf(
***************************************\n);
scanf(%d,s);
}
}
int initial_files(char *s
您可能关注的文档
最近下载
- JJF(电子)30306-2010 示波器差分探头校准规范.pdf VIP
- 750t履带吊安装拆卸安装方案.docx VIP
- 2018版肺血栓栓塞症诊治与预防指南.pdf VIP
- 社保扣款银行协议书.docx VIP
- 2025年通城县第二批事业单位公开招聘16名工作人员笔试参考题库附答案解析.docx VIP
- 2025-2026学年统编版三年级道德与法治上册全册教案设计.pdf VIP
- 2025高考数学专项复习:圆锥曲线基础总结、二级结论、方法与技巧.pdf VIP
- 五年级第一次月考试卷.docx VIP
- 第九讲_语言测.ppt VIP
- 2025年新济南版七年级上册生物全册精编知识点(新教材专用).pdf
文档评论(0)