C LZ78算法-填充字典后覆盖字典?
我对LZ78算法的实现方法有一个疑问——在第一个索引中填充字典后,是否有可能添加新的“关键字”?看看我的代码:C LZ78算法-填充字典后覆盖字典?,c,compression,C,Compression,我对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]; ilo
//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--;
}
//向词典添加新词
int-dodaj(无符号字符*dop)
{
int i;
slownik[adresy[ilosc]*257]=dop[0];
对于(i=1;iROZMIAR-1)przesun();
}
//移动字典中的位置(如果已满)
int przesun()
{
int i,b;
b=肾上腺[0];
对于(i=0;i这个循环,如果我们从包含a,b,c,d
和ROZMIAR=4
的adresy
开始,将导致:
对于(i=0;i
adresy
包含b,b,b,b
我猜你想从高处开始往下走
我必须指出,我不完全理解您的代码,我发现很难阅读变量看起来像名称的代码,但我不理解它们的含义。比方说,adresy[]数组以小的eneries开始-4个符号,然后是253个空格。我想在这些空格中放入下一个单词,尽可能多,就像字典可能有的那样。我很确定我的答案解释了-你必须从最高的[使用过的]地址开始。