Tabela Rash
- apresentação: domínio e capacidade de explicação (os códigos entregues deverão ser apresentados)
Construir um programa em C que receba números inteiros entre 0 a 99 e os adicione em uma tabela hash (vetor de 10 posições).
Os processos de inserção, busca e remoção deverão ser baseados no cálculo de endereçamento: função( h ) = chave % tamanhoVetor.
O tratamento de colisão deverá ser o ENCADEAMENTO SEPARADO (uso de listas encadeadas em vetores). Finalmente, o programa deverá ter um MENU com a seguinte estrutura: 1 - Inserir 2 - Pesquisar 3 - Remover 4 - Sair Opção: _ Sempre que um dado for inserido é necessário: - mostrar o endereço calculado para o dado; - se houve ou não colisão; Sempre que um dado for pesquisado ou removido é necessário: - mostrar o endereço calculado para o dado; - e se estava ou não em situação de colisão;*/
//Nomes: Rodrigo e Igor
#include
#include
#include
#define TAM 10
typedef struct cel{ int chave; // valor a ser inserido struct cel *prox; //ponteiro para celula proxima
}Celula;
/* Esta funcao insere uma nova celula já ordenado em uma lista encadeada.
* A nova celula eh inserida no final da lista.
* Ao final, a lista modificada eh retornada
*/
Celula *inserir(int valor, Celula *lista){ int aux;
Celula *nova,*p; nova = (Celula *) malloc(sizeof(Celula)); nova->chave = valor;
if(!lista){ printf("o numero %d nao se encontra em colisao\n",valor); nova->prox=NULL; lista=nova;
}
else{//quando entra nesse else, já está em colisão printf("o numero %d se encontra em colisao\n",valor); p=lista; while(p->prox!=NULL) p=p->prox; if(nova->chave < p->chave){//inserir ordenado aux=nova->chave; p->chave=nova->chave; nova->chave=aux; } p->prox=nova; nova->prox=NULL;
}
return lista;
}
/* Esta funcao recebe como parametro o valor a ser
* removido e a lista