Função de hash simples em C
Publicado por Perfil removido (última atualização em 22/03/2010)
[ Hits: 37.183 ]
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))); } }
Script de caixa eletrônico em C
funcarg.c - Função com argumento
Retorna o número elevado ao quadrado
Jogo da velha, para 2 jogadores, bem simples
Resolver problemas de Internet
Como compartilhar a tela do Ubuntu com uma Smart TV (LG, Samsung, etc.)
Descritores de Arquivos e Swappiness
Fez porcaria no teu repositório Git? Aprenda a restaurar uma versão anterior do seu código!
Restaurando Fontes de Download do Hydra no Linux
Atualizando "na marra" o YT-DLP quando começa a dar erro de downloads
Como instalar o WPS com interface e corretor ortográfico em PT-BR no Arch Linux
Bluetooth CSR 4.0 Dongle (Alternativo) (1)
Desbloquear chaveiro padrão (5)
como eu instalo o mali-t60x_r12... (5)