• 大小: 39KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-06
  • 语言: C/C++
  • 标签: LZ78  

资源简介

c++编写的简单LZ78编码程序,内附步骤说明

资源截图

代码片段和文件信息


#include
#include
using namespace std;

void main()
{
//////////////////////////////////////////////////////////////////////////////////////////初始化操作
  int i=0j=0z=0flag=0p_count=0;
  char *p;        //字符指针p
  string C=““;    //当前字符C
  char str[20];   //字符数组str
  int pos[20];    //位置数组
  string dic[20]; //字典数据的存储
  string Z[20];   //Z字典为空
  string P=““;    //P前缀为空
  cin>>str;       //输入字符数组
  p=str;          //指针指向str 


//////////////////////////////////////////////////////////////////////////////////////////输入操作
  cout<  for(i=0;i  {cout<  cout<  for(i=0;i  {cout<<*(p+i)<<“ “;}
  cout<  cout<<“编码过程:“<  cout<<“步骤“<<“  “<<“位置“<<“  “<<“字典“<<“  “<<“输出“<  
    
//////////////////////////////////////////////////////////////////////////////////////////编码过程
  do
  {
    C=*p;//当前字符为str中字符

     for(i=0;i<=z;i++)//寻找字典中内容
 {
       if((P+C)==Z[i])//判断P+C是否在词典中
   {
 P=P+C;//后缀累积
     flag=1;//标志位提示有相同单元
 break;//跳出循环
   }
 }
      
 if(flag==0)//如果没在字典中找到
 {   
 Z[z]=P+C;//存入字典 
 for(j=0;j<=z;j++)//一系列输出操作:若为单字符自动加入字典双字符则比较后得出输出位置
 {
 if(P==Z[j] || Z[z].length()==1)//编码过程的显示
 { 
   cout<    pos[z+1]=p_count+2-Z[z].length();                    //存储位置至数组pos
               dic[p_count+2-Z[z].length()]=Z[z];                   //存储字典至数组dic
   cout<    if(Z[z].length()!=1)
   cout<<“(“<               else
   cout<<“(0“<    break;
 }
 }
 z++;//数组下一位
 P=““;//清空
 }  
  }
  while(flag=0p_count++*(++p)!=‘\0‘);//标志位清空非‘\0‘情况下循环再次开始

  if(P!=““)//检测前缀P是否为空
  {
    cout<<“剩余编码:“<  }

  for(i=0;i<10;i++)
cout<
 
////////////////////////////////////////////////////////////////////////////////////////////解码过程
  cout<  cout<<“例如:0A0B0C1A1B... ...“<  char str1[20];
  char *p1;
  int m=0k=0;
  cin>>str1;
  p1=str1;
  cout<<“解码结果:“<  for(;*(p1+k)!=‘\0‘;k++)
  {
   if(k%2==0)
   { 
  m=*(p1+k);
  if(m==48)
    cout<<““;
  else
        cout<   }
   else
    cout<<*(p1+k);
  }
  cout<////////////////////////////////////////////////////////////////////////////////////////////解码结束
}


  

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           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

评论

共有 条评论