資源簡(jiǎn)介
c++編寫(xiě)的簡(jiǎn)單LZ78編碼程序,內(nèi)附步驟說(shuō)明

代碼片段和文件信息
#include
#include
using?namespace?std;
void?main()
{
//////////////////////////////////////////////////////////////////////////////////////////初始化操作
??int?i=0j=0z=0flag=0p_count=0;
??char?*p;????????//字符指針p
??string?C=““;????//當(dāng)前字符C
??char?str[20];???//字符數(shù)組str
??int?pos[20];????//位置數(shù)組
??string?dic[20];?//字典數(shù)據(jù)的存儲(chǔ)
??string?Z[20];???//Z字典為空
??string?P=““;????//P前綴為空
??cin>>str;???????//輸入字符數(shù)組
??p=str;??????????//指針指向str?
//////////////////////////////////////////////////////////////////////////////////////////輸入操作
??cout< ??for(i=0;i ??{cout<??cout< ??for(i=0;i ??{cout<<*(p+i)<<“?“;}
??cout< ??cout<<“編碼過(guò)程:“< ??cout<<“步驟“<<“??“<<“位置“<<“??“<<“字典“<<“??“<<“輸出“< ??
????
//////////////////////////////////////////////////////////////////////////////////////////編碼過(guò)程
??do
??{
????C=*p;//當(dāng)前字符為str中字符
?????for(i=0;i<=z;i++)//尋找字典中內(nèi)容
?{
???????if((P+C)==Z[i])//判斷P+C是否在詞典中
???{
?P=P+C;//后綴累積
?????flag=1;//標(biāo)志位提示有相同單元
?break;//跳出循環(huán)
???}
?}
??????
?if(flag==0)//如果沒(méi)在字典中找到
?{???
?Z[z]=P+C;//存入字典?
?for(j=0;j<=z;j++)//一系列輸出操作:若為單字符自動(dòng)加入字典雙字符則比較后得出輸出位置
?{
?if(P==Z[j]?||?Z[z].length()==1)//編碼過(guò)程的顯示
?{?
???cout< ???pos[z+1]=p_count+2-Z[z].length();????????????????????//存儲(chǔ)位置至數(shù)組pos
???????????????dic[p_count+2-Z[z].length()]=Z[z];???????????????????//存儲(chǔ)字典至數(shù)組dic
???cout< ???if(Z[z].length()!=1)
???cout<<“(“< ???????????????else
???cout<<“(0“< ???break;
?}
?}
?z++;//數(shù)組下一位
?P=““;//清空
?} ?
??}
??while(flag=0p_count++*(++p)!=‘\0‘);//標(biāo)志位清空非‘\0‘情況下循環(huán)再次開(kāi)始
??if(P!=““)//檢測(cè)前綴P是否為空
??{
????cout<<“剩余編碼:“<??}
??for(i=0;i<10;i++)
cout<
?
////////////////////////////////////////////////////////////////////////////////////////////解碼過(guò)程
??cout< ??cout<<“例如:0A0B0C1A1B...?...“< ??char?str1[20];
??char?*p1;
??int?m=0k=0;
??cin>>str1;
??p1=str1;
??cout<<“解碼結(jié)果:“< ??for(;*(p1+k)!=‘\0‘;k++)
??{
???if(k%2==0)
???{?
??m=*(p1+k);
??if(m==48)
????cout<<““;
??else
????????cout< ???}
???else
????cout<<*(p1+k);
??}
??cout< ////////////////////////////////////////////////////////////////////////////////////////////解碼結(jié)束
}
??
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2013-12-03?16:07??LZ78\
?????文件???????57856??2013-12-03?16:09??LZ78\LZ78編碼步驟.doc
?????文件????????2882??2013-12-03?16:04??LZ78\LZcode.cpp
評(píng)論
共有 條評(píng)論