⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lzw.cpp

📁 LZW的VC++实现
💻 CPP
字号:
#include<string.h>
#include<iostream.h>

void copy1(char *prefix,char *s,int i,int j)//拷贝字符串
{ int k;
for(k=0;k<20;k++)//将前缀字符清空
   prefix[k]=0;
for(k=i;k<i+j;k++)
   prefix[k-i]=s[k];
  
}
void main()
{
char s[30],prefix[30],dic[20][30]={"A","B","C"};
int i ,j,k,n,m;//k指字典中的编号,m指匹配号码,j指截取字母的长度
k=3;m=0;j=1;i=0;
cout<<"请输入:(ABBABABAC)\n";
cin.getline(s,30);
cout<<"输出-------词典-------------------\n";

for(int r=0; r<3; r++)
cout<<"\t("<<r<<dic[r]<<endl;
while(i < strlen(s))
{
   copy1(prefix,s,i,j);//读取字符的长度
    for(n=0;n<k;n++)//查找字典中的编号
     {

		 if(strcmp(prefix,dic[n])==0)
		 {
		  j=j+1;m=n;
		  if((i+j)<=strlen(s))
		   copy1(prefix,s,i,j);
		  else
		   strcpy(prefix,"");
		 }
     }
	cout<<"("<<m<<")";
     if(strlen(prefix)!=0)
      {strcpy(dic[k],prefix);//写入字典
	 cout<<"\t("<<k<<")"<<dic[k]<<endl;}
      k=k+1;
      i=i+j-1;
      j=1;
	}
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -