兹于2017年11月,应《多媒体技术基础》课程实验的要求,本人就基于无损数据压缩LZW算法做了较为深入的理解,用C++语言实现无损数据压缩LZW算法。
无损数据压缩LZW算法
一、实验目的
1.掌握LZW算法的编码过程;
2.掌握LZW算法的译码过程。
二、实验设备与环境
Dev-C++ 5.9.2,Windows 7 操作系统
三、实验内容、程序清单及运行结果
实验要求:
用Dev-C ++编写LZW算法程序。
1. 实现LZW编码程序。
2. 实现LZW解码程序。
实验参考步骤:
1.打开Dev-C ++,进入编程环境,新建一个源代码文件,文件名任意;
2.将下面我所编写的代码拷贝到所新建的源代码文件中;
3.点击编译运行。
C++源代码:
/**
* 作者:戴文治
* 时间:2017年11月3日
* 描述:LZW编码译码算法
* 特点:该代码具有可移植性,可在Dev-C++、VC++6.0、VS2010等多种平台完美运行
* 该代码具有可重用性,运行后可对多个测试用例进行顺序测试而不受影响
*/
#include<iostream>
#include<cstring>
#define N 1000
using namespace std;
class LZW{ //LZW算法类
public:
char encodeStr[N]; //要编码的字符串
int decodeList[N]; //要译码的数组
int firstDictionaryNum; //先前词典的大小
int length; //当前词典的大小
char dictionary[N][N]; //先前词典
LZW(){ //构造函数
encodeStr[0] = '\0';
for(int i=0;i<N;i++){
this->decodeList[i]=-INT_MAX;
}
for(int i=0;i<N;i++){
this->dictionary[i][0] = &