我有一个关于实现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, d
和ROZMIAR=4
的adresy
开始,将会得到:
(i = 0;我
含b, b, b, b
的adresy
。
我猜你想从上面开始然后往下走?
我必须指出,虽然我不完全理解你的代码,我发现很难阅读代码的变量有点像名字,但我不能理解他们的意思。