Sei sulla pagina 1di 2

Universidade Federal Rural do Semi-Árido

Campus Pau dos Ferros


Disciplina de Estrutura de Dados e Programação
Instrução para Trabalho Prático II:
Árvores Binárias

1. Descrição do Problema:
Após decidir aumentar seu acervo de livros, uma biblioteca online resolve melhorar a
forma que seus dados estão armazenados. Então, optaram por utilizar uma estrutura de
dados do tipo árvore binária. Posteriormente depararam com problemas de relatórios.
Com isso, decidiram manter um registro de cada livro em um arquivo no disco.

2. Objetivo:
O objetivo desse trabalho é construir um pequeno banco onde seus dados estão baseado
em árvores binárias e seja gerado um relatório onde possa a qualquer momento, ler os
dados atualizados do relatório.

3. Dica:
Para isso, vamos admitir algumas condições : Cada nó contém um registro de dados, e
cada registro contém os seguintes campos:
• Código ISBN do livro : numérico, de 10 dı́gitos (Campo chave)
• Nome do autor ou autores : alfabético, de 50 posições
• Tı́tulo do livro : alfabético, de 50 posições
• Editora : alfabético, de 15 posições
• Ano de publicação : numérico
Então, nesse caso, tem-se duas estruturas: Uma estrutura/registro com os dados
do livro e uma estrutura que seria a estrutura do nó. Essa segunda, terá um campo tipo do
livro e dois ponteiros tipo do nó para suas sub-árvores.
O ISBN é utilizado como campo chave, ou seja, a árvore binária é organizada
segundo o número de ISBN (menores à esquerda, maiores à direita).

3.1. Implemente as seguintes rotinas:


• CadastrarLivro (Raiz, Livro): Inclui os dados contidos no registro Livro na
árvore binária cujo nó raiz é apontado pela variável Raiz. Devolve: SUCESSO ou
FRACASSO, indicando o resultado da operação. FRACASSO pode ocorrer, tanto
na impossibilidade de alocar mais memória, quanto na tentativa de cadastrar um
livro com ISBN repetido (não se deve permitir dois livros cadastrados com mesmo
ISBN).
• ProcurarLivro (Raiz, IsbnProcurado): Procura um livro cujo ISBN é igual a
IsbnProcurado, na árvore binária cujo nó raiz é apontado pelo argumento Raiz.
Devolve: um ponteiro para o nó onde foi encontrado o registro do livro que contém
esse ISBN, ou um ponteiro nulo (NULL) caso não encontre um livro com tal
ISBN.
• ExibirLivro (Endereco): Recebe o ponteiro Endereco que aponta para um nó
da árvore, e mostra todos os campos desse nó na tela. Obs.: Para procu-
rar um livro na árvore e mostrar seus dados, primeiro você deve chamar a ro-
tina ProcurarLivro (Raiz, IsbnProcurado), que irá lhe devolver o
endereço do nó que contém o livro que você procura. Aı́, você pega esse endereço
e envia para a função ExibirLivro( ...), que vai mostrar os dados na tela.
• RemoverLivro (Raiz, Dado): Remove o nó cujo valor é indicado por Dado, da
árvore binária cujo nó raiz é apontado por Raiz. Cuidado com os nós filhos dos
nós a serem removidos. O “avô” deve adotá-los.
• ListarAcervo (Raiz): Percorre a árvore apontada por Raiz. Você pode, por exem-
plo, adotar a ordem de percurso vista em sala para fazer com que os livros sejam
exibidos por número de ISBN em ordem crescente.
O relatório.txt deverá conter todas as informações de cada livro contido no banco
de dados, ordenado pelo ISBN.

3.2. Funções para o arquivo:


• CriarArquivo (...): Cria um novo arquivo e respectivo ı́ndice. Apaga possı́veis
dados que já existissem nesse arquivo.
• GravaRegistro(...): Inclui um registro no arquivo.
• LeRegistro (...): Procura um determinado registro no arquivo através do campo
chave (ISBN).
• AbreArquivo (...): Abre o arquivo para leitura e/ou expansão de dados. Note que,
diferentemente da função CriaArquivo( ), esta função não deve destruir dados que
pudessem previamente existir.
• FechaArquivo (...): Fecha o arquivo de dados.

4. O que deve ser entregue:


• Código fonte do programa em C (bem identado e comentado).
• Documentação do trabalho. A documentação deve conter:
1. Sumário: contendo as seções pertinentes ao trabalho.
2. Implementação: descrição sobre a implementação do programa. Não
faça “print screens” de telas. Ao contrário, procure resumir ao máximo a
documentação, fazendo referência ao que julgar mais relevante. É impor-
tante, no entanto, que seja descrito o funcionamento das principais funções
e procedimentos utilizados, bem como decisões tomadas relativas aos ca-
sos e detalhes de especificação que porventura estejam omissos no enun-
ciado. Muito importante: os códigos utilizados na implementação não
devem ser inseridos na documentação.
3. Conclusão: comentários gerais sobre o trabalho e as principais dificulda-
des encontradas em sua implementação.
4. Formato: PDF.

Potrebbero piacerti anche