Skip to content

Latest commit

 

History

History
44 lines (43 loc) · 2.04 KB

File metadata and controls

44 lines (43 loc) · 2.04 KB

Aventura de Texto

Projeto semestral da disciplina MAC0216 - Técnicas de Programação I

Professor: Marco Dimas Gubitoso
Grupo: Bento Pereira, Daniela Favero e Pedro Gigeck.

Instruções para usar o teste.c

A entrada para testar esse módulo é:

  • Tamanho da hash table
  • Tamanho da lista ligada (quantos elementos serão inseridos)
  • O nome de cada elemento a ser inserido
  • Quantos elementos se deseja buscar
  • O nome de cada elemento a ser buscando
  • O nome de um elemento a ser retirado
  • O nome do elemento que foi retirado, para fazer uma busca

O módulo retorna:
- O hash de cada elemento inserido
- O nome do(s) elemento(s) buscado(s), seu hash e se foi encontrado ou não
- O nome do elemento a ser retirado
- Resultado da busca pel elemento retirado
- Vários prints confirmando os "free" da lista

Há um módulo *entrada.txt* com uma entrada que testa bem os módulos.

## Detalhes da implementação
### Elemento
Por enquanto a struct só contém o nome, mas já temos uma prévia comentada de como será.
### Lista
Listas ligadas implementadas com structs de elos que apontam para o próximo elo e guardam o ponteiro para um elemento. A estrutura lista em si é só um ponteiro para um elo chamado cabec (topo), que inicia nulo e representa o primeiro elemento da lista. As demais funções foram implementadas e estão comentadas no código mais detalhadamente, mas em sua maioria giram em torno do fato da lista ligada ter o último ponteiro que aponta para elos sendo sempre nulo.
### Hash
A tabela de hash funciona transformando a palavra em um número na base 257 e tirando o seu módulo pelo tamanho da tabela e o colocando numa lista ligada correspondente ao valor encontrado. Exemplo: A N O retornará (O * 257⁰ + N * 257¹ + A * 257²) mod(mod) Para as outras funções, utilizamos as funções de *lista.h*, executando elas baseando-se no hash do elemento de interessa.