0

我对 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,最后一个被覆盖。你们有任何想法如何修改此代码吗?

4

1 回答 1

0

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

对于(我=0;我

adresy包含b, b, b, b.

我怀疑你想从顶部开始走下来?

我必须注意,我不完全理解您的代码,并且我发现很难阅读变量看起来像名称的代码,但我无法理解它们的含义。

于 2013-03-03T13:09:28.640 回答