Hash
typedef struct hash{ int numero; struct hash *prox;
}Hash;
int i;
void init(Hash *tabela[], int tam){ for (i=0; inumero); aux = aux->prox; } } system("PAUSE");
}
void inserir(Hash *tabela[], float num){ Hash *novo = (Hash*)malloc(sizeof(Hash)); novo->numero = num; int pos = f_hash(num, TAM); novo->prox = tabela[pos]; tabela[pos] = novo;
}
void excluir(Hash *tabela[], float x){ int pos = f_hash(x, TAM); Hash *aux; if(tabela[pos] != NULL){ if(tabela[pos]->numero == x){ aux = tabela[pos]; tabela[pos] = tabela[pos]->prox; free(aux); printf("\nNumero excluido!"); }else{ aux = tabela[pos]->prox; Hash *ant = tabela[pos]; while(aux != NULL && aux->prox != NULL && aux->numero != x){ ant = aux; aux = aux->prox; } if(aux != NULL){ ant->prox = aux->prox; free(aux); } else{ printf("\nNumero nao encontrado"); } } }else{ printf("\nNumero nao encontrado"); }
}
void busca(Hash *tabela[], float num){ int pos = f_hash(num, TAM); Hash *aux = tabela[pos]; while(aux != NULL){ if(aux->numero == num){ printf("\nIndice: %d ->", pos); printf("\n%d", aux->numero); } aux = aux->prox; }
}
int main( ){ float num; char op; Hash *tabela[TAM]; init(tabela, TAM); //inicia tabela com NULL
while(op != '5'){ system("cls"); printf("\n"); printf(" Para inserir digite 1\n"); printf(" Para remover digite 2\n"); printf(" Para pesquisar digite 3\n"); printf(" Para imprimir digite 4\n\n"); printf(" Para sair 5\n"); scanf("%c", &op); printf("\n");