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