資源簡介
用C語言實現(xiàn)LZW編碼,之前在網(wǎng)上看到都是C++版的,做了修改。現(xiàn)在是C語言班,信息論大作業(yè),或者C語言作業(yè)都都行

代碼片段和文件信息
#include
#include
char?dic[30][50];
int?n;
void?init() //字典初始化
{
int?i;
strcpy(dic[0]“a“); //開始時詞典包含所有可能的根
strcpy(dic[1]“b“);
strcpy(dic[2]“c“);
for(i?=?3;?i?30;?i++) //其余為空
strcpy(dic[i]““);
}
int?find(char?s[]) //字典中尋找返回序號
{
int?temp?=?-1;
int?i;
for(i?=?0;?i?30;?i++)
{
if(strcmp(sdic[i])?==?0)
temp?=?i?+?1;
}
return?temp;
}
void?code(char?str[])
{
char?temp[2]?P[50];
int?i?=?1?j?=?3; //j為目前字典存儲的最后一個位置
temp[0]?=?str[0]; //取第一個字符
temp[1]?=?‘\0‘;
init(); //初始化
strcpy(Ptemp); //P為前綴
printf(“編碼為:“);
while(1)
{
char?t[2]?C[50]?PC[50]?t2[50];
t[0]?=?str[i]; //取下一字符
t[1]?=?‘\0‘;
strcpy(Ct); //C為字符流中下一個字符
strcpy(t2P); //t2存儲當(dāng)前前綴
if(strcmp(C““)?==?0) //無碼字要譯,結(jié)束
{
printf(“%5d“find(P)); //輸出代表當(dāng)前前綴的碼字
break; //退出循環(huán)編碼結(jié)束
}
if(find(strcat(PC))?>?-1) //有碼字要譯,如果P+C在詞典中,則用C擴展P,進行下一步:
{ //使用strcat()時,P已變?yōu)镻+C
i++;
}
else //如果P+C不在詞典中,則將P+C添加到詞典中,令P:=C
{
printf(“%5d“find(t2));
strcpy(PCP);
strcpy(dic[j++]PC);
strcpy(PC);
i++;
}
}
printf(“\n生成的詞典為:\n“);
for(i?=?0;?i? {
printf(“%12d??????“?i+1);
puts(dic[i]);
}
}
void?main() //主程序
{
char?str[50];
printf(“輸入要編碼的字符串(由abc組成):“);
gets(str);
code(str);
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????176166??2013-05-19?08:40??LZW\Debug\lzw?.exe
?????文件?????178000??2013-05-19?08:40??LZW\Debug\lzw?.ilk
?????文件???????6222??2013-05-19?08:40??LZW\Debug\lzw?.obj
?????文件?????181556??2013-05-19?08:29??LZW\Debug\lzw?.pch
?????文件?????435200??2013-05-19?08:40??LZW\Debug\lzw?.pdb
?????文件??????33792??2013-05-19?08:40??LZW\Debug\vc60.idb
?????文件??????45056??2013-05-19?08:40??LZW\Debug\vc60.pdb
?????文件???????1601??2013-05-19?08:40??LZW\lzw?.c
?????文件???????3377??2013-05-19?08:36??LZW\lzw?.dsp
?????文件????????516??2013-05-19?08:40??LZW\lzw?.dsw
?????文件??????41984??2013-05-19?08:40??LZW\lzw?.ncb
?????文件??????48640??2013-05-19?08:40??LZW\lzw?.opt
?????文件????????744??2013-05-19?08:40??LZW\lzw?.plg
?????目錄??????????0??2013-05-19?08:40??LZW\Debug
?????目錄??????????0??2013-05-19?08:40??LZW
-----------?---------??----------?-----??----
??????????????1152854????????????????????15
評論
共有 條評論