Função de hash simples em C
Publicado por Perfil removido (última atualização em 22/03/2010)
[ Hits: 37.505 ]
Exemplo de função de hash em C.
O tipo de entrada é String e o tamanho da tabela hash pode ser definido pelo usuário.
Mais adiante pretendo enviar uma versão com tratamento de colisão.
#include <stdio.h>
#include <string.h>
int tamanhoTabela = 10;
/*Rotina que transforma uma string em um número
que será usado depois na função hash
*/
int stringParaInt(char *string) {
int tamanho, primeira, segunda; //Inteiros que representam o tamanho,
//o código da primeira letra da string
//e o código da segunda letra.
tamanho = strlen(string); //Mede o tamanho da string
primeira = string[0]; //Obtém o código da primeira letra
segunda = string[1]; //Obtém o código da segunda letra
int resultado = (tamanho * primeira) + segunda; //Função de transformação
return resultado; //Retorna número que representa a string
}
/*A função mais simples de hash;
Para uma tabela com n posições (n == tamanhoTabela)
Toma-se o módulo n do valor inteiro gerado na
função "stringParaInt"
Retornará um número entre 0 e 19.
*/
int hash(int valor) {
return valor % tamanhoTabela;
}
/*Rotina principal
Captura strings quaisquer e gera a chave correspondente para tabela hash.
*/
int main() {
int i;
char dado[50];
printf("\nDefina o tamanho da tabela: ");
scanf("%d", &tamanhoTabela);
for (i=0; i<tamanhoTabela; i++) {
printf("\nDigite uma palavra qualquer: ");
gets(dado);
printf("A chave para a tabela (de 0 a %d) é: %d", tamanhoTabela-1, hash(stringParaInt(dado)));
}
}
funcarg.c - Função com argumento
Transformação de Matriz em Matriz Transposta
Transforma a quantidade de dias digitados em anos, meses e dias
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Como fazer a instalação do Samba
Como fazer a conversão binária e aplicar as restrições no Linux
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (21)
Formas seguras de instalar Debian Sid (13)
Malware encontrado em extensões do Firefox. (0)
Fiz uma pergunta no fórum mas não consigo localizar [RESOLVIDO] (21)









