- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
实验报告
班级0901101学号P姓名:日期2010.12.25
学号P姓名:
一、题目要求:编写一个压缩解压缩的小程序,要求基于Huffman编码之原理,达到正常压缩(压缩后文件大小要比原文件小)和正常解压缩(解压文件与原文件一样)
二、概要设计
??抽象数据类型定义:本程序还调用了一些抽象函数类型--Huffman树及编码:
typedefstruct
{
unsignedlongintweight;
unsignedintparent,lchild,rchild;
}HTNode,*HuffmanTree;
typedefchar**HuffmanCode;//哈弗曼树和哈弗曼编码的储存表示
??模块定义/函数声明:本次实验主要分为:压缩解压缩两大部分,基于Huffman编码原理,将程序分为五大板块即五个使用的函数:
主函数模块:即接受用户任务,调用相应程序
voidmain()
{
接受用户反馈的命令,开始压缩获解压缩任务
调用相应程序,进行压缩或解压缩
}//voidmain()
2)压缩函数模块:执行压缩任务
voidcompress()
{
获得用户提供的文件路径,找到相应文件
统计文件中各字符出现频率,建Huffman树
while(!feof(fp))
{
w[(unsignedint)q]++;
fread(q,1,1,fp);
}//统计fp文件中各char字符出现的次数按ASCII码值储存到对应的w数组中
HuffmanCoding(HT,HC,w,256);//建哈弗曼树,调用Huffmancoding函数得编码
向新创的压缩后文件写入文件标识符(用以识别是否是该程序所压缩),压缩文件后缀名,文件末尾补零数(这个只是先占一个位子,以后会写入真正的文件末尾补零数),256字符权值
for(i=0;istrlen(sign);i++)
fwrite(sign[i],1,1,fpzip);//先向fpzip中写入标识符
for(i=0;i10;i++)
fwrite(post[i],1,1,fpzip);
add=0;
fwrite(add,4,1,fpzip);//再向fpzip写入add(这个先占位会被真实的add代替)
for(i=0;i256;i++)
fwrite(w[i],4,1,fpzip);//再向fpzip写入各字符的权值
开始再次扫描文件,边扫描边翻译成Huffman编码,满一个字符就写入文件中
while(!feof(fp))
{//再次逐个字节的扫描文件fp,按照得到的哈弗曼编码进行翻译,并在翻译的过程中逐个字节将翻译结果储存到文件fpzip中
读取字符
翻译
满字节就写入文件中
}
回到压缩后文件头,重新写入文件标识符(用以识别是否是该程序所压缩),压缩文件后缀名,文件末尾补零数(这次是真正的文件末尾补零数)
}//voidcompress()
3)解压缩函数模块:解压此程序所压缩过的文件
voiduncompress()
{
获得用户提供的解压文件地址
printf(\n\n现在请输入需要解压的文件路径和文件名,需要输入文件扩展名hss(例如:C:\\用户 scanf(%s,path);
判断文件正误
for(i=0;i3;i++)//判断压缩文件的文件头是否正确
if(sign[i]!=_sign[i]){
printf(\n文件头不匹配,无法解压该文件!按回车键终止程序···\n);
ch=getchar();
exit(0);
}//for
建Huffman树
HuffmanCoding(HT,HC,w,256);
解压文件
for(
您可能关注的文档
- 环境监测个人总结.doc
- 1设计)开题报告2.doc
- 毕业设计开题报告_82.doc
- JSP程序设计实验报告.doc
- 毕业实习报告封面、撰写提纲及要求(2015).doc
- 数学苏教版六年级(上册)解决问题的策略(一).pptx
- 英语人教PEP版八年级(上册)Unit4+Section++B+1a-1e+.pptx
- 道德与法治人教版七年级(上册)【知识讲解】少年有梦.pptx
- 数学苏教版六年级(上册)分数乘分数(课件).pptx
- 非织造材料与工程专业职业生涯规划书.docx
- 道德与法治人教版八年级(上册)第二单元小结.pptx
- 数学苏教版六年级(上册)第八单元《可能性》.pptx
- 英语人教PEP版八年级(上册)Unit8Section B2a—2e(共21张PPT).pptx
- 音乐人教版八年级(上册)依呀呀噢咧噢 课件1.pptx
- 英语人教PEP版五年级(上册)Recycle1PartC.pptx
- 道德与法治人教版五年级(上册)我们神圣的国土+第一课时(课件).pptx
- 英语人教PEP版三年级(上册)课件-Unit 2 Colours 身边美丽的颜色.pptx
- 道德与法治人教版二年级(上册)团团圆圆过中秋.pptx
- 人美版美术六年级(上册)第十一课 镜头里的花 人美版 (共30张PPT).ppt
- 音乐人教版八年级(上册)红河谷 课件 (2).pptx
文档评论(0)