當前位置:成語大全網 - 英語詞典 - 字典編碼算法的壹個例子

字典編碼算法的壹個例子

c編程語言

//編碼

# 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);

}