LZW编码编程实现(C++版)Word格式.doc

上传人:聆听****声音 文档编号:3729310 上传时间:2023-05-02 格式:DOC 页数:6 大小:60.50KB
下载 相关 举报
LZW编码编程实现(C++版)Word格式.doc_第1页
第1页 / 共6页
LZW编码编程实现(C++版)Word格式.doc_第2页
第2页 / 共6页
LZW编码编程实现(C++版)Word格式.doc_第3页
第3页 / 共6页
LZW编码编程实现(C++版)Word格式.doc_第4页
第4页 / 共6页
LZW编码编程实现(C++版)Word格式.doc_第5页
第5页 / 共6页
LZW编码编程实现(C++版)Word格式.doc_第6页
第6页 / 共6页
亲,该文档总共6页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

LZW编码编程实现(C++版)Word格式.doc

《LZW编码编程实现(C++版)Word格式.doc》由会员分享,可在线阅读,更多相关《LZW编码编程实现(C++版)Word格式.doc(6页珍藏版)》请在冰点文库上搜索。

LZW编码编程实现(C++版)Word格式.doc

输入A

此时,A在表中,而AB不在表中,则输出A对应的码字1,同时将AB写入表中,此时表为

4AB

编码输出为1(A已编码)

第二步,输入B,B在词典中,而BB不在词典中,则输出2,将BB写入表中,此时表为

5BB

编码输出为12(AB已经编码)

....

2.解码

根缀表为

定义如下变量

StringP:

前一步码字流

pW:

StringP的第一个字符

StringC:

当前的码字流

cW:

StringC的第一个字符

第一步

输出StringC并StringP=StringC

如:

1解码为A,则StringC=A

那么

输出A,并令StringP=A

---------------------------------------------------------------------------

第二步

1.解码得到StringC,并输出StringC

2.将StringP+cW放入词典(如果当前码字不在词典中,则将StringP+cP放入词典中)

3.StringP=StringC

第二步要解码为2,解码为B,则StringC=B,输出B(此时StringP=A)

将StringP+cW放入表中,即将AB放入表中,此时表为

四、实验情况及分析

编码解码

错误提示

附:

源代码

#include<

iostream>

string>

iomanip>

usingnamespacestd;

stringdic[30];

intn;

intfind(strings)//字典中寻找,返回序号

{

inttemp=-1;

for(inti=0;

i<

30;

i++)

if(dic[i]==s)temp=i+1;

}

returntemp;

voidinit()//字典初始化

dic[0]="

a"

;

dic[1]="

b"

dic[2]="

c"

//字根为a,b,c

for(inti=3;

i++)//其余为空

dic[i]="

"

voidcode(stringstr)

init();

//初始化

chartemp[2];

temp[0]=str[0];

//取第一个字符

temp[1]='

\0'

stringw=temp;

inti=1;

intj=3;

//目前字典存储的最后一个位置

cout<

<

\n编码为:

for(;

chart[2];

t[0]=str[i];

//取下一字符

t[1]='

stringk=t;

if(k=="

)//为空,字符串结束

"

find(w);

break;

//退出for循环,编码结束

if(find(w+k)>

-1)

w=w+k;

i++;

else

stringwk=w+k;

dic[j++]=wk;

w=k;

endl;

for(i=0;

j;

setw(45)<

i+1<

setw(12)<

dic[i]<

voiddecode(intc[])

intpw,cw;

cw=c[0];

intj=2;

\n译码为:

dic[cw-1];

n-1;

pw=cw;

cw=c[i+1];

if(cw<

=j+1)

t[0]=dic[cw-1][0];

j++;

dic[j]=dic[pw-1]+k;

t[0]=dic[pw-1][0];

j+1;

voidmain()

stringstr;

while

(1)

\n\n\ta.编码\tb.译码\n\n"

请选择:

charcha;

cin>

>

cha;

if(cha=='

a'

\n输入要编码的字符串(由a、b、c组成):

str;

code(str);

b'

intc[30];

\n消息序列长度是:

n;

\n消息码字依次是:

c[i];

decode(c);

else{cout<

输入错误!

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2