c - LZ78算法-填充字典后覆盖字典



我有一个关于实现LZ78算法的方法的问题-是否有可能在填充字典到第一个索引后添加新的"关键字"?看看我的代码:

//adding new word to dictionary
int dodaj(unsigned char *dop )
{
  int i;
  slownik[ adresy[ilosc]*257 ] = dop[0];
  for(i=1;i<dop[0]+1;i++)
    slownik[ adresy[ilosc]*257+i ] = dop[i];
  ilosc++;
  if( ilosc>ROZMIAR-1 ) przesun();
}
//move location in dictionary, if full
int przesun()
{
  int i,b;
  b = adresy[0];
  for( i=0; i<ROZMIAR-1; i++ )
  {
    adresy[i] = adresy[i+1];
  }
  adresy[ ROZMIAR-1] = b;
  ilosc--;
}

在我的代码中,在填充字典后,所有出现的都移动-1,最后一个被覆盖。你们知道怎么修改这个代码吗?

这个循环,如果我们从包含a, b, c, dROZMIAR=4adresy开始,将会得到:

(i = 0;我

b, b, b, badresy

我猜你想从上面开始然后往下走?

我必须指出,虽然我不完全理解你的代码,我发现很难阅读代码的变量有点像名字,但我不能理解他们的意思。

最新更新