Tabela hash - linguagem c
551 palavras
3 páginas
/*Em duplas Critérios de avaliação: - edentação - documentação - lógica e execução - otimização - 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;