Hashing com Sondagem Linear

Sua tarefa neste exercício é implementar hashing com a técnica de resolução de colisões chamada sondagem linear.

Para tanto, considere a seguinte representação de tabela hash:

typedef struct {
  int *tb; // tabela hash
  int M;   // tamanho da tabela hash
  int N;   // total de chaves presentes na tabela
} TH;

em que table é o vetor que representa a tabela hash, M é o tamanho da tabela e N é o total de chaves presentes na tabela.

Você deve submeter um arquivo contendo três funções:

  1. A função
void THinsere (TH *h, int ch);

deve inserir a chave ch na tabela hash. Nesta função de inserção:

  1. A função
int THremove (TH *h, int ch);

deve remover a chave ch da tabela hash. Esta função deve retornar zero, se a chave foi encontrada e removida, ou 1-1 caso a chave não estivesse presente na tabela. Além disso, se a chave for encontrada e removida, deve-se reinserir na tabela hash as chaves que forem necessário.

  1. A função
int THbusca (TH *h, int ch);

deve buscar ocorrência da chave ch na tabela hash. Ela deve retornar 1 se a chave for encontrada, ou 0, caso contrário.

Restrições