Toda tabela de símbolos tem um universo de chaves, que é o conjunto de todas as possíveis chaves. O conjunto das chaves efetivamente usadas em uma determinada aplicação é, em geral, apenas uma pequena parte do universo de chaves. Nessas circunstâncias, faz sentido usar uma tabela de tamanho bem menor que o tamanho do universo de chaves.
Denotaremos o tamanho de nossa tabela por M. A tabela terá a forma tab[0 .. M-1] . Temos que inventar agora uma maneira de mapear o universo de chaves no conjunto de índices da tabela. Esse é o papel da função de espalhamento (= hash function). A função de espalhamento recebe uma chave v e devolve um número inteiro h no intervalo 0..M-1.
O número h é o código de espalhamento (= hash code) da chave v. É fundamental que a função de espalhamento seja uma função no sentido matemático do termo, isto é, que para cada chave v a função devolva sempre o mesmo código de espalhamento. Além disso, uma boa função de espalhamento espalha as chaves uniformemente pelo conjunto de índices.
Como o número de chaves é em geral maior que M, é inevitável que a função de espalhamento leve várias chaves diferentes no mesmo índice. Dizemos que há uma colisão quando duas chaves diferentes são levadas no mesmo índice.
Fonte: http://www.ime.usp.br/~pf/mac0122-2002/aulas/hashing.html
a)listas encadeadas - estrutura de dados abstrata que consiste em 2 elementos: dado e ponteiro para o proximo elemento. Para inserir um node depois de 1 especifco, o apontamento *proximo do novo node deve ser o proximo do node anterior.
b)quicksort - algoritmo de organização
c)árvore binária - estrutura abstrata que usa nodes de forma hierarquica
d)vetores - estrutura de dados homogênea e estática que usa indices para percorrer elementos
e)tabela hash - correto