Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C LZ78算法-填充字典后覆盖字典?_C_Compression - Fatal编程技术网

C 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

我对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--;
}
//向词典添加新词
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个空格。我想在这些空格中放入下一个单词,尽可能多,就像字典可能有的那样。我很确定我的答案解释了-你必须从最高的[使用过的]地址开始。