LZW编码思想:
(1) 在压缩过程中动态地形成一个字符序列表(字典)。
(2) (a)每当压缩扫描图像发现一个字典中没有的字符序列,就把该字符序
列存到字典中(b)并用字典的地址(编码)作为这个字符序列的代码,替换原图
像中的字符序列(c)下次再碰到相同的字符序列,就用字典的地址代替字符序列。
LZW编码算法流程:
视始化:将所的单字符串放入串表
读第一个字符→前缀串
Step:读下一个输入字符K
If没有这样的K(输入已穷尽)
码字( )→输出;结束
If K已存在于串表中:
K→ :repeat Step
Else K不在串表中:
码字( )→输出
K→串表;
K→ ;repeat Step
#include<iostream>
#include<string>
using namespace std;
const int N=200;
class LZW
{
private:
string Dic[200];
int code[N];
public:
LZW(){
Dic[0]='a';
Dic[1]='b';
Dic[2]='c';
string *p=Dic;
}
void Bianma(string cs[N]);
int IsDic(string e);
int codeDic(string f);
void display(int g);
};
void LZW::Bianma(string cs[N]){