Você está na página 1de 2

UTFPR​ ​-​ ​Universidade​ ​Tecnológica​ ​Federal​ ​do​ ​Paraná

DACOM​ ​-​ ​Departamento​ ​de​ ​Computacão


LT33B​ ​::​ ​Estrutura​ ​de​ ​Dados

Exercícios​ ​09​ ​::​ ​Hash

1) Escreva uma função que devolve a quantidade de elementos (Nodes) existentes em uma Tabela
Hash.

Função:​ ​int​ ​hashSize(Hash*​ ​h)

2) Escreva uma função que devolver o valor (Node::value) de um node da chave informada. Caso a
chave​ ​não​ ​for​ ​encontrada​ ​na​ ​tabela,​ ​a​ ​função​ ​devolverá​ ​“none”.

Função:​ ​string​ ​hashGet(Hash*​ ​h,​ ​int​ ​key)

3) Escreva uma função que remove um Node da tabela hash a partir do id fornecido. Lembre-se de
utilizar​ ​delete​​ ​para​ ​liberar​ ​o​ ​espaço​ ​previamente​ ​alocado​ ​para​ ​o​ ​Node.

Função:​ ​void​ ​hashRemove(int​ ​id)

4) Escreva​ ​uma​ ​função​ ​que​ ​imprime​ ​somente​ ​as​ ​linhas​ ​não​ ​vazias​ ​(não​ ​nulas)​ ​da​ ​Tabela​ ​Hash.

Função:​ ​void​ ​hashPrintNonNull(Hash*​ ​h)

5) Escreva uma função que coloca todos os valores (Node::value) dos elementos na Tabela Hash dentro
de​ ​um​ ​vector<string>.​ ​Ao​ ​final,​ ​a​ ​função​ ​deve​ ​devolver​ ​o​ ​vetor.

Função:​ ​vector<string>​ ​hashToVector(Hash*​ ​h)

6) Escreva uma função que implementa o algoritmo de ​bubble sort ​para ordenar cada Lista Encadeada
da tabela Hash. Para simplificar o algoritmo, faça as trocas dos valores “id” dos Nodes e não modifique
as​ ​posições​ ​dos​ ​mesmos.

Função:​ ​void​ ​listBubbleSort(List*​ ​list);

7) Modifique o código original fornecido da tabela Hash para que a chave (id) dos Nodes seja do tipo
string​. Refaça as operações ​hashInsert​, ​hashPrint e ​hashGet​. A função de Hash deve utilizar o
módulo (%) da soma dos códigos ASCII dos caracteres da string para calcular uma posição na tabela,
conforme​ ​o​ ​código​ ​abaixo:

int​ ​hashIndex(string​ ​id)​ ​{


​ ​ ​ ​ ​int​ ​sum​ ​=​ ​0;
​ ​ ​ ​ ​for​ ​(char​ ​c​ ​:​ ​id)
​ ​ ​ ​ ​ ​ ​ ​ ​sum​ ​+=​ ​c;
​ ​ ​ ​ ​return​ ​sum​ ​%​ ​Hash::MAX;
}

Você também pode gostar