Llaverola Posted November 4, 2007 at 02:11 AM Report Share #145066 Posted November 4, 2007 at 02:11 AM Ola pessoal, tenho um enorme problema. tenho um trabalho final pa fazer numa cadeira d programação no meu curso e tou com imensas dificuldades. ALGUM DE VOCES PODE-ME ARRANJAR O CODIGO EM C DE UMA HASHTABLE? obrigado Link to comment Share on other sites More sharing options...
Rui Carlos Posted November 4, 2007 at 11:15 AM Report Share #145094 Posted November 4, 2007 at 11:15 AM http://en.wikipedia.org/wiki/Hash_table Eu sugeria-te ler alguma coisa sobre hash tables, em vez de andar a pedir código. Não é difícil encontrar implementações de hash tables na net, mas é bom que compreendas os conceitos que estão por trás delas, até porque há vários tipos de hash table, com as mais variadas implementações. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
mogers Posted November 5, 2007 at 10:58 AM Report Share #145334 Posted November 5, 2007 at 10:58 AM O Rui Carlos disse tudo. Eu tenho a minha implementação de uma hash table mas se ta fornecesse não ias aprender nada com isso e provavelmente não a ias saber usar sem analisar a estrutura de uma hash table. Contudo, posso enviar-te para o email uma página web da usaco, sobre estruturas de dados (incluindo hash tables). Não posso por o link porque a página não é pública. Só avançando no treino deles é que vamos tendo acesso aos textos deles. "What we do for ourselves dies with us. What we do for others and the world, remains and is immortal.", Albert Pine Blog pessoal : contém alguns puzzles, algoritmos e problemas para se resolver com programação. Link to comment Share on other sites More sharing options...
Llaverola Posted November 14, 2007 at 12:27 AM Author Report Share #147263 Posted November 14, 2007 at 12:27 AM Mais uma coisa, eu tenho as funçoes todas duma hashtable implementadas. só q n sei criar o main, para poder usar a hastable....ou seja, quero ver a correr o programa. como fazer isso? Link to comment Share on other sites More sharing options...
Llaverola Posted November 15, 2007 at 11:43 PM Author Report Share #147696 Posted November 15, 2007 at 11:43 PM Estou a fazer uma hastable, e neste momento deparo-me com uma duvida.... como criar uma hastable? outra duvida: e esta importante tb, alguem me pode fornecer o source code da função hashcode()? pretendo criar uma função hashcode dum determinada string. aguardo ajuda. obrigado Link to comment Share on other sites More sharing options...
Rui Carlos Posted November 15, 2007 at 11:48 PM Report Share #147698 Posted November 15, 2007 at 11:48 PM Não há a função hashcode, há várias formas de implementar uma função para esse efeito. Uma simples, é somar todos os caracteres. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
Llaverola Posted November 16, 2007 at 01:05 AM Author Report Share #147712 Posted November 16, 2007 at 01:05 AM mas ao somar todos caracteres, n vai haver palavras com o mm hashcode...ou vai? ja agora,é uma soma simpleS? ou cada caracter corresponde ao seu codigo ascii e soma-se esse codigo? Link to comment Share on other sites More sharing options...
mogers Posted November 16, 2007 at 01:07 AM Report Share #147713 Posted November 16, 2007 at 01:07 AM Uma melhor função de hash é multiplicar os códigos ascci dos caracteres... a soma é demasiado fraca... melhor ainda é multiplicares o código ascii de cada letra por um número primo, exemplo 37 😄 "What we do for ourselves dies with us. What we do for others and the world, remains and is immortal.", Albert Pine Blog pessoal : contém alguns puzzles, algoritmos e problemas para se resolver com programação. Link to comment Share on other sites More sharing options...
Rui Carlos Posted November 16, 2007 at 09:51 AM Report Share #147741 Posted November 16, 2007 at 09:51 AM mas ao somar todos caracteres, n vai haver palavras com o mm hashcode...ou vai? ja agora,é uma soma simpleS? ou cada caracter corresponde ao seu codigo ascii e soma-se esse codigo? Para não haver colisões podes elevar números primos diferentes ao valor de cada letra. Por exemplo: 2^str[0] + 3^str[1] + 5^str[3] + 7^str[4] + ... (os primos não precisam de estar ordenados, apenas precisam de ser todos diferentes). Matematicamente, garantes que não há duas strings diferentes com o mesmo hash, mas também vão poder atingir valores extremamente elevados. Logo isto não vai evitar colisões na Hash Table, a menos que as posições da tua Hash Table cresçam tanto quanto queiras. Dependendo do tamanho da Hash Table e das strings, a soma das letras poderá ou não ser suficiente. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now