📄 lzw编码.cpp
字号:
#include<iostream.h>
#include<stdio.h>
#include<string.h>
#define N 600
struct tabler
{char chara[50];
int encode;
};
tabler table[N];
char input[50];
int output[50];
char string[50];
char character[50];
void init()
{char a[75];
int b=48;
char c='0';
for(int i=0;i<75;i++)
{a[i]=c;
c++;}
for(i=0;i<75;i++)
{table[i].chara[0]=a[i];
table[i].encode=b;
b++;}
}
void main()
{init();
char string1[50];
int input_len,next=1,out_len=0;
int num=75,num1=258;
cout<<"input the string for lzw:";
cin>>input;
input_len=strlen(input);
string[0]=input[0];
while(input_len>0)
{character[0]=input[next];
next++;
strcpy(string1,string);
strcat(string1,character);
for(int i=0;i<num;i++)
{if(strcmp(table[i].chara,string1)==0)
{strcpy(string,string1);
break;}}
if(i==num){
for(int j=0;j<num;j++)
{if(strstr(table[j].chara,string))
{ output[out_len]=table[j].encode;
out_len++;
break;}}
strcpy(table[num].chara,string1);
table[num].encode=num1;
num1++;
num++;
strcpy(string,character);
}
input_len--;}
for(int i=0;i<num;i++)
{if(strcmp(table[i].chara,string)==0)
{output[out_len]=table[i].encode;
break;}}
cout<<"output the encode:";
for( i=0;i<=out_len;i++)
cout<<output[i]<<" ";
cout<<"257"<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -