//編碼
# include & ltstdio.h & gt
# include & ltstring.h & gt
//復制字符串
void copy 1(char *前綴,char *s,int i,int j)
{
int k;
for(k = 0;k & lt20;k++)
前綴[k]= ' \ 0 ';
for(k = I;k & ltI+j;k++)
前綴[k-I]= s[k];
}
void main()
{
char s[30],prefix[30],dic[20][30]={,A,B,C };
int i,j,k,m,n;
I = 0;j = 1;k = 4;m = 0;
printf(請輸入字符串:\ n);
獲取;
while(我& ltstrlen(s))
{
copy1(前綴,s,I,j);
for(n = 1;n & ltk;n++)
{
if(strcmp(前綴,dic[n])==0)
{
j = j+1;
m = n;
if((I+j)& lt;=strlen(s))
copy1(前綴,s,I,j);
其他
{
strcpy(前綴,);
}
}
}
printf(%d,m);
if(strlen(前綴)!=0)
{
strcpy(dic[k],前綴);
printf(%s \n,DIC[k]);
}
k = k+1;
I = I+j-1;
j = 1;
}
}
//解碼
# include & ltstdio.h & gt
# include & ltstring.h & gt
#定義N ^ 20//最大字符串長度
#定義M ^ 20//字典中的最大碼流數
#定義L 20
結構字流
{
char w[N];
} word[L];
void main()
{
int代碼[M];//存儲碼字流
//int code[]={1,2,3,4,7,3 };
int i,k,t;
int j;//在字典中附加字符串
int cW//當前碼字
int pW//前壹個代碼字
無符號字符C;//當前字符
char p[20];//詞綴符號字符串
word[1]。w[0]= ' A ';//初始化輸入字典
單詞[2]。w[0]= ' B ';
單詞[3]。w[0]= ' C ';
j = 4;
//輸出待解碼的碼字流。
printf(\n請輸入碼流號:);
scanf(%d,& ampk);
printf(\n請輸入碼流號:);
for(I = 0;我& ltk;i++)
scanf(%d,(code+I));
cW =代碼[0];
printf(\n輸出字流:%s,word[cW]。w);
pW = cW
for(I = 1;我& ltk;i++)
{
cW =代碼[I];
if(cW & lt;j)
{
printf(\n輸出字流:%s,word[cW]。w);//輸出到字符流
C=word[cW]。w[0];
strcpy(p,(const char *)word[pW]。w);
t = strlen((const char *)p);
p[t]= C;
p[t+1]= ' \ 0 ';
strcpy(word[j].w,(const char *)p);
j = j+1;
pW = cW
}
其他
{
strcpy(p,(const char *)word[pW]。w);
C=word[pW]。w[0];
t = strlen((const char *)p);
p[t]= C;
p[t+1]= ' \ 0 ';
strcpy(word[j].w,(const char *)p);
printf(\n輸出字流:%s,p);
j = j+1;
pW = cW
}
}
for(I = 1;我& ltj;i++)
printf(\n字典是%s,word[i]。w);
printf(\n這就完了\ n);
}