实验四LZW编码方案程序设计

实验四LZW编码方案程序设计

ID:36342228

大小:131.00 KB

页数:7页

时间:2019-05-09

实验四LZW编码方案程序设计_第1页
实验四LZW编码方案程序设计_第2页
实验四LZW编码方案程序设计_第3页
实验四LZW编码方案程序设计_第4页
实验四LZW编码方案程序设计_第5页
资源描述:

《实验四LZW编码方案程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验四LZW编码方案程序设计1、实验目的(1)进一步熟悉通用编码算法;(2)掌握C语言程序设计和调试过程中数值的进制转换、数值与字符串之间的转换等技术。2、实验要求(1)输入:本程序将从标准输入中读入待压缩的数据流;(2)输出:将压缩结果输出到标准输出上去。3、LZW算法描述1:procedureLZW2:字典初始化:将压缩文件中所有使用到的单字节字符放入字典中,为了压缩任何类型的文件,可以将字典的前256个位置(0x000到0x0FF)一次分配给0x00到0xFF的256个单字节字符。3:动态数据初始化:初始化新单词存放位置指针P。将它指向字典的第一个空位置。例如P=256(即

2、0x100),读入被压缩文件的第一个字符cha,作为待处理单词W。单词的前缀Q为空,即Q=4095,尾字符就是cha,序号(码字)就是cha的序号。4:如果文件再没有字符了,输出当前单词的序号。编码结束。如果文件中还有字符,把当前单词W作为前缀,再从被压缩文件中读入一个字符CH,把CH作为尾字符,得到一个单词W。5:如果字典中已有W,则将W看做当前单词W,返回第三步。如果字典中没有W(发现一个新单词),先将原单词W的序号输出,再加新单词W,增加到字典中,然后把刚刚读入的字符CH作为当前单词W,返回第三步。6:endprocedure************************

3、*******************************************************实验流程图:*******************************************************************************4、参考代码/*********************************************************************Author:*Date:*Copyright:*Purpose:UseLZWalgorithmtocodethesourcesymbols*******

4、****************************************************#include#include#includestructword{unsignedintn;unsignedcharc;}w,wd[4096];//Dictionaryunsignedintp,n;unsignedcharh,m,l,f;/*Outputthecode*/voidout(intn){if(f==0){h=n/16;m=(n<<4)&0xf0;f=1;}else{m+=n/256;l=n&0xff;fpu

5、tc(h,stdout);fputc(m,stdout);fputc(l,stdout);h=m=l=f=0;}}/*Maincopressprogram*/voidlzw(){intc,i;unsignedcharch;fprintf(stderr,"begincompress,pleasewait!");for(i=0;i<256;i++){//Initializefirst256wordwd[i].n=4095;//indictionarywd[i].c=i;}p=256;w.n=4095;w.c=n=fgetc(stdin);h=m=l=f=0for(;;){

6、c=fgect(stdin);if(c==-1){out(n);if(f)out(4095);fprintf(stderr,"compressionisover!");return;}ch=c;for(i=n+1;i

7、clude#include#include#includeusingnamespacestd;charwd[4096][20];//设定一个字典wdcharstr[20],w[20],w1[20],c[20];chartext[1000];//输入的文本textintN[1000];intnum;intM;intout(chars[])//得到一个短语是否在字典中,在时输出它的码字{inti;for(i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。