Função de hash simples em C
Publicado por Perfil removido (última atualização em 22/03/2010)
[ Hits: 37.027 ]
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))); } }
Converter um vetor em uma matriz multidimensional
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Máquinas Virtuais com IP estático acessando Internet no Virtualbox
Instalar o Microsoft Edge no Slackware 15
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
crontab executar em tempos (1)
Formatando cartão de memoria que nao formata[AJUDA] (9)
Programa duplicado no "Abrir com" e na barra de pesquisa do ... (3)