文档详情

LZW算法的实现.doc

发布:2017-08-08约1.34万字共16页下载文档
文本预览下载声明
多媒体技术与应用课外作业 班级: 07计科一班 姓名: 陈东棋 学号: 2007117039 实验名称:LZW算法的编程实现 实验内容:寻找或编写程序来实现LZW算法 实验步骤:C语言程序如下所示 程序由五个模块组成 lzw.h 定义了一些基本的数据结构,常量,还有变量的初始化等 #ifndef __LZW_H__ #define __LZW_H__ //------------------------------------------------------------------------------ #include stdio.h #include stdlib.h #include windows.h #include memory.h //------------------------------------------------------------------------------ #define LZW_BASE 0x102// The code base #define CODE_LEN 12 // Max code length #define TABLE_LEN 4099 // It must be prime number and bigger than 2^CODE_LEN=4096. // Such as 5051 is also ok. #define BUFFERSIZE 1024 //------------------------------------------------------------------------------ typedef struct { HANDLE h_sour; // Source file handle. HANDLE h_dest; // Destination file handle. HANDLE h_suffix; // Suffix table handle. HANDLE h_prefix; // Prefix table handle. HANDLE h_code; // Code table handle. LPWORD lp_prefix; // Prefix table head pointer. LPBYTE lp_suffix; // Suffix table head pointer. LPWORD lp_code; // Code table head pointer. WORD code; WORD prefix; BYTE suffix; BYTE cur_code_len; // Current code length.[ used in Dynamic-Code-Length mode ] }LZW_DATA,*PLZW_DATA; typedef struct { WORD top; WORD index; LPBYTE lp_buffer; HANDLE h_buffer; BYTE by_left; DWORD dw_buffer; BOOL end_flag; }BUFFER_DATA,*PBUFFER_DATA; typedef struct //Stack used in decode { WORD index; HANDLE h_stack; LPBYTE lp_stack; }STACK_DATA,*PSTACK_DATA; //------------------------------------------------------------------------------ VOID stack_create( PSTACK_DATA stack ) { stack-h_stack = GlobalAlloc( GHND , TABLE_LEN*sizeof(BYTE) ); stack-lp_stack = GlobalLock( stack-h_stack ); stack-index = 0; }
显示全部
相似文档