[cdev] hash table

Grigoriy A. Sitkarev sitkarev на komitex.ru
Пн Янв 24 20:59:54 MSK 2011


Егор, они не проверяли.

--
Г.А.

rg-400 пишет:
> В hash_table_replace
> 
> У вас есть в tabel указатель на функцию compare.
> А вы пишите: b->key != key.
> 
> А если table->table[idx] содержит значение NULL
> и проверку b->key != key ( заменим на compare(b->key, key) != 0) 
> проводить нельзя?
> 
>  while(b->key != key) {
>         if (b->next == NULL){
>             return -1;
>         }else{
>             b = b->next;
>         }
>     }
> Т.е. функцию нужно бы исправить.
> 
> /* ищем первое совпадение в списке, если совпадений нет, то список 
> просто закончится и очень просто сделать вывод был ли в списке 
> ключ(сравнить b  с нулевым указателем) */
> 
> for (b = tabel->tabel[idx]; b != NULL; b->next) {
>         if (*(tabel->compare)(b->key, key) == 0)
>                 break;
> }
> 
> if (b == NULL)
>         return -1;
> 
> b->value = data;
> 
>





Подробная информация о списке рассылки cdev