Trabalho prático de estrutura de dados
Lauro Ângelo Gonçalves de Moraes
DOCUMENTAÇÃO DA PRIMEIRA PARTE
A seguir apresento a lógica e as funções que criei para a primeira parte do trabalho, a que se refere à construção dos doublets.
Utilizei cinco TADs para o modelo, são elas: palavra, seção, dicionário, doublet e doubelts.
Há entre elas uma certa hierarquia, palavra é a mais básica e constitui as seções, que por sua vez formam o dicionário. O programa lê os dados de entrada e armazenada as palavras lidas na estrutura palavra. Para a formação do dicionário que engloba todas as palavras lidas, são organizadas seções, cada qual representando um tamanho referente ao número de caracteres que a palavra contém.
Essas TADs citadas são construídas mediante o uso de listas encadeadas, na verdade sua implementação reflete mais uma pilha, já que os elementos são inseridos e retirados na lista sem nenhum critério específico a não ser o de inserir e retirar elementos na primeira posição, operações que tem um baixo custo, O(1).
Para a criação e apresentação dos doublets, utilizo as TADs doublet e doublets. A primeira contém a seqüência de palavras do doublet, enquanto a TAD doublets contém todos os casos de testes, sendo cada um deles um doublet.
No geral, tentei implementar para cada TAD algumas funções básicas com as funcionalidades de iniciar, ou seja, alocar memória suficiente para o ponteiro. Destruir, liberando a memória do ponteiro e de todas as estruturas que estão contidas nela. A verificação se a lista está vazia. Adição e remoção de elementos, além de remover todas as ocorrências de elementos internos à lista, que o caso das funções que iniciam com
“Limpa”.
Nas funções de retirada também há uma hierarquia. A função destrói se vale da limpa, que por sua vez se vale da remove.
Apresentarei a TAD palavra, as descrições das funções seguem-se exatamente após a apresentação das mesmas: void TPalavra_Inicia(TPalavra **pPalavra, char *Letras){