[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