[cdev] hash table

rg-400 rg-400 на list.ru
Пн Янв 24 20:54:00 MSK 2011


В 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