- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验四LZW编码方案程序设计
1、实验目的
(1)进一步熟悉通用编码算法;
(2)掌握C语言程序设计和调试过程中数值的进制转换、数值与字符串之间的转换等技术。
2、实验要求
(1)输入:本程序将从标准输入中读入待压缩的数据流;
(2)输出:将压缩结果输出到标准输出上去。
3、LZW算法描述
1:procedureLZW
2:字典初始化:将压缩文件中所有使用到的单字节字符放入字典中,为了压缩任何类型的文件,可以将字典的前256个位置(0x000到0x0FF)一次分配给0x00到0xFF的256个单字节字符。
3:动态数据初始化:初始化新单词存放位置指针P。将它指向字典的第一个空位置。例如P=256(即0x100),读入被压缩文件的第一个字符cha,作为待处理单词W。单词的前缀Q为空,即Q=4095,尾字符就是cha,序号(码字)就是cha的序号。
4:如果文件再没有字符了,输出当前单词的序号。编码结束。如果文件中还有字符,把当前单词W作为前缀,再从被压缩文件中读入一个字符CH,把CH作为尾字符,得到一个单词W。
5:如果字典中已有W,则将W看做当前单词W,返回第三步。如果字典中没有W(发现一个新单词),先将原单词W的序号输出,再加新单词W,增加到字典中,然后把刚刚读入的字符CH作为当前单词W,返回第三步。
6:endprocedure
*******************************************************************************
实验流程图:
*******************************************************************************
4、参考代码
/********************************************************************
*Author:
*Date:
*Copyright:
*Purpose:UseLZWalgorithmtocodethesourcesymbols***********************************************************
#includestdio.h
#includestdlib.h
#includeconio.h
structword{
unsignedintn;
unsignedcharc;
}w,wd[4096];//Dictionary
unsignedintp,n;
unsignedcharh,m,l,f;
/*Outputthecode*/
voidout(intn)
{
if(f==0){
h=n/16;
m=(n4)0xf0;
f=1;
}
else{
m+=n/256;
l=n0xff;
fputc(h,stdout);
fputc(m,stdout);
fputc(l,stdout);
h=m=l=f=0;
}
}
/*Maincopressprogram*/
voidlzw()
{
intc,i;
unsignedcharch;
fprintf(stderr,\n\nbegincompress,pleasewait!\n);
for(i=0;i256;i++){//Initializefirst256word
wd[i].n=4095;//indictionary
wd[i].c=i;
}
p=256;
w.n=4095;
w.c=n=fgetc(stdin);
h=m=l=f=0
for(;;){
c=fgect(stdin);
if(c==-1){
out(n);
if(f)
out(4095);
fprintf(stderr,\n\ncompressionisover!\n);
return;
}
ch=c;
for(i=n+1;ip;i++){
if(wd[i].n!=n)
continue;
if(wd[i].c==ch)
break;
}
if(i!=p){
w.n=n;
w.c=ch;
n=i;
}
else{
out(n);
if(p4095){
wd[p].n=n;
wd[p].c;
p++;
}
w.n=4095;
n=w.c=ch;
}
}
}
voidmai
您可能关注的文档
最近下载
- 社会组织与法人登记管理工作 .ppt VIP
- 西门子伺服操作说明书SINAMICS V90、SIMOTICS S-1FL6.pdf VIP
- 科技论文图表等规范表达.pptx VIP
- 第4章_电磁波的传播.ppt
- 2025年初级会计师《初级会计实务》思维导图.pdf VIP
- (高清版)B-T 22930.2-2021 皮革和毛皮 金属含量的化学测定 第2部分:金属总量.pdf VIP
- 石油化工储运系统罐区设计规范.pdf VIP
- B100376宁夏社会科学院职工食堂维修工程招标文件.doc VIP
- sci论文的图表规范.doc VIP
- 2025年广东省公需课《人工智能赋能制造业高质量发展》试题答案详解.docx VIP
文档评论(0)