Como excluir o elemento do hsearch
Estou usando a função hsearch_r fornecida pela biblioteca GNU C.
Vejo que, embora eu possa adicionar elementos à tabela HASH usando hsearch_r e passando a ação como ENTER, não vejo como remover um elemento ou uma entrada da tabela HASH.
Alguém sabe um motivo para isso?
Posso fazer o seguinte para implementar minha função de exclusão.
Primeiro procuro por ele usando hsearch_r com a ação como FIND. Então, uma vez que recebo um ponteiro para o hash_element, liberto-o. Isso vai funcionar? Qual a vantagem de uma biblioteca de hash se eu puder apenas adicionar elementos e procurá-los. Por que não é fornecida uma rotina de exclusão?
Eu tentei pesquisar no Google o código fonte da biblioteca hsearch e não consegui encontrá-lo. Alguém também pode me indicar isso?
http://linux.die.net/man/3/hcreate_r
EDITAR:
Também vejo que, se eu chamar o hsearch_r duas vezes com a ação ADD, ele não gera um erro nem atualiza o hash com o novo valor. Isso é estranho. Isso significa que internamente o hsearch NÃO implementa uma funcionalidade de substituição e teremos que fazer isso sozinhos, ou seja, primeiro faça uma pesquisa e, se existir, exclua a primeira entrada e adicione uma nova. No entanto, para fazer isso, precisaríamos excluir um elemento do hash, o que não consigo.