Моя хеш-таблица использует эту структуру:
typedef struct bucket{
user *info;
bool available;
}bucket;
typedef struct user{
char nick[6];
int age;
}user;
typedef struct hashtable{
int size;
int elements;
bucket **buckets;
}hashtable;
Я сделал эту функцию удаления для своей хеш-таблицы:
void delete_item(hashtable *HashTable, char *nick){
int position = contains(HashTable, nick);
if(position != -1){
HashTable->buckets[position]->available = true;
HashTable->buckets[position] = NULL;
HashTable->elements--;
}
}
Сама функция не вызывает ошибку, но если я удаляю элементесли я пытаюсь распечатать хеш-таблицу, то удаленная позиция дает ошибку сегментации .
Идея удаления состоит в том, чтобы установить для структуры в контейнере значение NULL и установить этот блок как доступный для вставки.снова, а также работает как маркер для функции содержит, чтобы продолжать поиск в следующей позиции.