欢迎来到天天文库
浏览记录
ID:31727067
大小:150.36 KB
页数:8页
时间:2019-01-17
《c语言大作业(基于哈夫曼树的压缩程序)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、2009级《高级语言程序设计》大作业上机报告题目:基于哈弗曼算法的压缩参与人员:【姓名】【学号】[问题定义]压缩机解压的实现[开发工具]DEV-C++[数据结构]structhead{/*记录字符在数组中的位置*//*字符出现频率(权值)*//*定义哈夫曼树指针变量*//*定义存储哈夫曼编码的数组*/unsignedcharb;longcount;longparent,Ich,rch;charbits[256];}header[512],tmp;tmp用于交换值header[512]用于储存数据fiIename[255]用于储存文件地址[算法描述]本程序是基于哈弗曼编码的程序主要分为两个函数:
2、压缩函数voidcompress()解压函数voiduncompress()主要流程如下[算法描述]main函数地址存在u压缩(具体见代码注释)打印错误打印压缩成功输岀文件压缩算法1打开文件2逐个读取文件的ASCII码,储存在c,统计频率fread(&c,1,1,ifp);header[c]・count++;3每个哈夫曼码值及其对应的ASCII码存放在一维数组header[i]中if(header[i]・count!=0)header[i]・b=(unsignedchar)i;4据频率(权值〉大小,对结点进行排序5构建哈曼树,亚此选择权值最小的入树6计算权值大小7从文件开始将字符编码每8各编入
3、一个字节,剩下超过4位再编入下一个,少于4位,则放入新字节uncompress()函数地址存在U输入解压成功解压算法1读取原文件长度,对文件进行定位fread(&flength,sizeof(long),1,ifp);2取原文件字符的权值p=(long)c;3将f转换为二进制表示的字符串itoa(f,buf,2);4据哈夫曼编码的长短,对结点进行排序5根据哈夫曼编码的长短,对结点进行排序6通过哈夫曼编码的长短,依次解码,从原來的位存储还原到字节存储7在单字节内对相应位置补08从压缩文件屮的按位存储还原到按字节存储字符;字符位置不改变程序调试情况1主界面1—Compressfile2—Uncom
4、pressfileSelect1or2:_2解压测试1一一Compressfilep-一UncompressfileSelect1or2:1sourcefilenane:.原文件(H)帮(Y)<(查格式9)文件(E)方广方上畳来就US就卡蚤个签館哦国吉爱费阿上大槩•,了哥家告划吿式的逐^©{<爰阿国广规广方上US卡家拉国吉ia贺阿上畳来「了哥划•跻吿式的巒个宀£豕阿鼬上国感啦阿上大回家卡卡量的塞鉛哦国阿上国感来・・了akgjak规广方上阿上大回雜gh卡US就卡就式的窓毋哦丹口丹恳方上国感来5:I方上5吿式的就卡量个家ak规广方上阿上大£韦出卡US就番式的蠢毋贺13需广方上国感来21®嗷氧寵gh
5、卡嗨站吿式的養並稠骑如好•閱吿卡U卡贅厦社喬小卡于対吿式的家氏贺ia鈴广方上国蠶囂W船鬻国哦里口簷is较矍番了;了哥家工乎跻辍Isr赵国动似耀18辭au辭回大回家拉劳国hal工乎静醪哦给哦里口靠•甥似飆飞〃;来uJwfs工乎亠IRt^lheHJ匕罠稲gh卡US就sf留pi贺込费诱賞l^.f卡aus上阿拉尊家工丹惑觉枣曙哦里动似敞感国槩IJH国鬧制里爰脣里口簷1SS-F幕阿上盍家家工乎显家的巒£^里口喬国渤似⑷国上;T5law国hal就卡国吉爱韩ig.•了哥家工乎C••••置小位大」百%压L——Compress£lie1——UncompressfileSelect1or2:1sourcefile
6、nane:c://l.txtlestinationfilename:c://2compresssuccessfully?请按任意键继续・・・我答我能4瓷齧啤i彗今用匡刃方广方上国感来•,上次回家拉劳孰US轨卡逼个窸峯哦国吉爱费・laA^fi:上吠感来;:告划告式的窸芻里个蒙阿国r哥冢广规广方上国感来阿上大回家拉压缩得到的文件2JI性常规I安全摘要§匸文件类型:文件描述:2c:位置:16.9KB(17,324字节)20.0KB(20,480字节)大小:占用空间:1文本文档25KB解压测试1——Compressfile2—UncompressfileSelect1or2:2sourcefilen
7、ane:c://2destinationfilenane:US卡US就卡畫个塞毋哦国吉・la贺阿上国感来;了哥划•疥告个宀E豕阿规ak规广方上国感啦阿上大回家卡gh卡US就卡的塞齧哦国遵贺・la^g!阿上国感来;了•髓•茹告式的家卡畫个宀£豕lak那lak规广方上国盘阿上大回聶gh卡US就卡就式的塞鉛哦FiLIFi贺込^g!方上国感来;乎工卿•茹告式的就卡鬣个冢帥lak规广方上靠啦阿上大聖櫃訪卡1
此文档下载收益归作者所有