文档详情

LZW算法的C语言实现.doc

发布:2018-04-29约1.06万字共25页下载文档
文本预览下载声明
程序由五个模块组成 lzw.h 定义了一些基本的数据结构,常量,还有变量的初始化等 #ifndef __LZW_H__ #define __LZW_H__ // #include #include #include #include // #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; // VOID stack_destory PSTACK_DATA stack GlobalUnlock stack- h_stack ; GlobalFree stack- h_stack ; // VOID buffer_create PBUFFER_DATA buffer buffer- h_buffer GlobalAlloc GHND, BUFFERSIZE*sizeof BYTE ; buffer- lp_buffer GlobalLock buffer- h_buffer ; buffer- top 0; buffer- index 0; buffer- by_left 0; buffer- dw_buffer 0; buffer- end_flag FALSE; // VOID buffer_destory PBUFFER_DATA buffer GlobalUnlock buffer- h_buffer ; GlobalFree buffer- h_buffer ; // VOID re_init_lzw PLZW_DATA lzw //When code table reached its top it should //be reinitialized. memset lzw- lp_code, 0xFFFF, TABLE_LEN*sizeof WORD ; lzw- code LZW_BASE; lzw- cur_code_len 9; // VOID lzw_create PLZW_DATA lzw, HANDLE h_so
显示全部
相似文档