📄 my_lzw_coding.cpp
字号:
/*LZW编码*/
#include <iostream.h>
#include <stdio.h>
#include <string.h>
void main()
{
char str_in[96],table[192][14],temp[14];
int in_length,table_length=1,flag,flag1,table_width=1,code;
for(int i=0;i<96;i++)
{
str_in[i]=NULL;
}
for(i=0;i<192;i++)
{
for(int j=0;j<14;j++)
{
table[i][j]=NULL;
}
}
cout<<"请输入字符串"<<endl;
cin>>str_in;
in_length=strlen(str_in);
cout<<"字符长度为:"<<in_length<<endl;
//把单个字符置入编码的字串表。
table[0][0]=str_in[0];
for (i=1;i<in_length;i++)
{
for(int j=0;j<table_length;j++)
{
if(table[j][0]==str_in[i])
{
flag=0;
break;
}
else
{
flag=1;
}
}
if(flag==1)
{
table[table_length][0]=str_in[i];
table_length++;
}
}
//完成编码字串表。(处理多个字符的字串表部分)
cout<<"编码"<<endl;
for(i=0;i<14;i++)
{
temp[i]=NULL;
}
for (i=0;i<=in_length;i++)
{
if (table_width==1)
{
if (i==0)
{
temp[table_width-1]=str_in[i];
}
else
{
temp[table_width-1]=str_in[i-1];
i--;
}
}
if(table_width>1)
{
temp[table_width-1]=str_in[i];
}
for (int k=0;k<table_length;k++)
{
for(int j=0;j<table_width;j++)
{
if(table[k][j]==temp[j])
{
flag1=1;
}
else
{
flag1=0;
break;
}
}
if (flag1==1)
{
code=k+1;
break;
}
}
table_width++;
if(i==in_length)
{
cout<<code<<endl;
}
if(flag1==0)
{
cout<<code<<" ";
for(int j=0;j<table_width;j++)
{
table[table_length][j]=temp[j];
}
for(j=0;j<14;j++)
{
temp[j]=NULL;
}
table_length++;
table_width=1;
}
}
cout<<"编码字串表:"<<endl;
for (int m=0;m<table_length;m++)
{
cout<<m+1<<" "<<"-"<<" ";
for(int n=0;n<14;n++)
{
cout<<table[m][n];
}
cout<<endl;
}
cout<<"表长:"<<table_length<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -