Uma tabela recebe chaves do tipo string e armazena os dados internamente como um vetor. A função de espalhamento da tabela Hash utiliza o seguinte procedimento para mapear as strings em inteiros:
1 – Mapeamento de caracteres: os três primeiros caracteres são mapeados em inteiros da forma:
De a até f: mapeado para 1
De g até n: mapeado para 3
De o até s: mapeado para 5
De t até z: mapeado para 7
2 – Os inteiros associados a cada um dos três primeiros caracteres são multiplicados entre si.
3 – O resto da divisão por 11 é computado, dado que o vetor possui tamanho 11.
Dadas as seguintes strings: ULISSES, DANIELLE e LARISSA, aplicando a função de espalhamento apresentada, indique a alternativa correta que apresenta a string e a posição obtida.
Atribuo valor indicado na questão para os 3 primeiros caracteres de cada nome, os multiplico entre si, divido o resultado por 11 que é o tamanho do vetor, o resto da divisão representa a posição na chave.
veja:
ULISSES: Os três primeiros caracteres são 'U', 'L', 'I', que são mapeados para 7* 3* 3 = 63 / 11 = 5,72 arredondando o resto é 0,8, o mesmo que 63%(mod)11 = 8
DANIELLE: Os três primeiros caracteres são 'D', 'A', 'N', que são mapeados para 1* 3* 1 = 3/11 = 0,27 (arredonda para 0,3) o resto é 3 (três), o mesmo que 3%(mod)11 = 3
LARISSA: Os três primeiros caracteres são 'L', 'A', 'R', que são mapeados para 3* 1* 5 = 15/11 = 1,36 (arredonda para 0,4) o resto é 4 (quatro), o mesmo que 15%(mod)11 = 4
Lista de comentários
Resposta:
A alternativa correta é a letra d. h(ulisses) = 8, h(danielle) = 3 e h(larissa) = 4.
Resposta:
h(ulisses) = 8
h(danielle) = 3
h(larissa) = 4
Explicação:
Atribuo valor indicado na questão para os 3 primeiros caracteres de cada nome, os multiplico entre si, divido o resultado por 11 que é o tamanho do vetor, o resto da divisão representa a posição na chave.
veja:
ULISSES: Os três primeiros caracteres são 'U', 'L', 'I', que são mapeados para 7* 3* 3 = 63 / 11 = 5,72 arredondando o resto é 0,8, o mesmo que 63%(mod)11 = 8
DANIELLE: Os três primeiros caracteres são 'D', 'A', 'N', que são mapeados para 1* 3* 1 = 3/11 = 0,27 (arredonda para 0,3) o resto é 3 (três), o mesmo que 3%(mod)11 = 3
LARISSA: Os três primeiros caracteres são 'L', 'A', 'R', que são mapeados para 3* 1* 5 = 15/11 = 1,36 (arredonda para 0,4) o resto é 4 (quatro), o mesmo que 15%(mod)11 = 4