Use uma árvore binária de busca para construir um
'dicionário de sinônimos', definindo funções
para inserir uma palavra e seu sinônimo na
árvore de busca. Caso a palavra já esteja presente no
dicionário, o sinônimo da mesma deve ser
substituído pelo novo valor.
procurar pelo sinônimo de uma palavra.
substituir o sinônimo de uma palavra por outro.
excluir uma palavra (e seu sinônimo) da árvore de busca.
verificar se a árvore obedece à definição de 'árvore binária de busca'
O seu programa de testes dessas funções deve liberar toda
a memória alocada durante a execução do mesmo.
Você pode supor que as palavras e seus sinônimos não
terão mais que 256 caracteres, mas o programa só deve
manter na árvore o espaço necessário para os
mesmos, nenhum caracter a mais.
As operações de busca, inserção,
alteração e exclusão de elementos no dicionário implementado como
árvore binária de busca não devem ser recursivas (todas elas podem ser
implementadas sem fazer uso de uma pilha auxiliar).
A entrada de dados será feita em duas partes:
o conjunto inicial de sinônimos será lido a partir de um arquivo texto.
as consultas e alterações no
dicionário serão feitas pelo usuário de forma
interativa através da entrada e saída padrão
(teclado e vídeo).
Arquivo de Entrada
O arquivo de entrada contendo o conjunto inicial de sinônimos a
ser representado na árvore binária de busca, é
formado por uma seqüência de linhas onde cada linha
contém uma palavra e seu sinônimo separados por um
espaço em branco. A última linha desse arquivo
contém "# #", indicando 'fim de entrada'. Exemplo de arquivo de
entrada:
néscio estúpido conserto reparo discriminar distinguir acutilar golpear nitrir relinchar espadana labareda relinchar nitrir ornar enfeitar gáudio júbilo futrica fuxico insigne celebre insanidade demência desatino disparate crista cimo pileque bebedeira adelgaçar desbastar piparote peteleco profícuo proveitoso concernente referente funéreo fúnebre preferência predileção cerviz nuca veado cervo chapada planalto desalento desânimo insistir perseverar manhoso jeitoso referente concernente frontispício fachada gola colarinho compromisso obrigação insolência desafôro inspeção exame comportamento conduta # #
Entrada Interativa
A entrada interativa é feita através de comandos
digitados pelo usuário. Um comando consiste numa linha de texto
onde o primeiro caracter indica o comando a ser executado. Os comandos
possíveis:
p palavra --- procura pelo significado de uma palavra i palavra significado --- inclui uma nova palavra e seu significado no dicionário s palavra significado --- substitui o significado atual de uma palavra x palavra --- exclui a palavra (e seu significado) do dicionário v --- verifica se a árvore (ainda) obedece à definição de árvore binária de busca f --- encerra execução do programa
>p nitrir ---> nitrir: relinchar >p espadana ---> espadana: labareda >p abantesma ---> abantesma: palavra desconhecida >i abantesma fantasma ---> abantesma: fantasma >i manhoso chorão ---> manhoso: palavra já existe no dicionário >s crista pico ---> crista: pico >x nitrir ---> nitrir: palavra excluída >x energumeno ---> energumeno: palavra desconhecida >v ---> verificação: a árvore obedece à definição de árvore binária de busca >f
O projeto deverá ser entregue por email ao assistente de ensino até o dia 29/09/07 |