MC 202 - EF - Atividade de Laboratório no. 3
última atualização: 05/09/08
Descrição do Problema: Biblioteca para manipulação de listas
A atividade consiste em escrever uma biblioteca voltada à
manipulação de listas genéricas. Esta
atividade
se baseia nos conceitos apresentados em sala (ver notas de aula) e
no uso de compilação separada. A biblioteca deve ser
construída de acordo com as definições feitas em compilacaoSeparada.html e obedecer às
definições feitas em 'lists.h'.
Operações com listas
O arquivo lists.h(alterado em 31/08/08)
define as operações a serem implementadas para
operação com listas.
O conjunto de operações a ser implementado é
aplicável à maioria das situações onde se
manipula listas. A implementação das
funções descritas em 'lists.h' deve seguir as
recomendações feitas em sala
(ver notas de aula)
onde uma lista é acessada sempre através de um descritor. Esse descritor deve conter basicamente
as seguintes informações:
número de elementos na lista
apontador para a função de liberação dos elementos (definida pela aplicação)
apontador para a lista que efetivamente contém os elementos inseridos pela aplicação
Para a implementação da lista propriamente dita, considerando o conjunto de operações,
listas circulares podem ser a melhor opção.
A biblioteca 'lists.c' deve implementar as seguintes funções definidas em
'lists.h':
- Criação de uma lista.
Devolve o apontador para o descritor da lista.
- Inserção de um 'elemento' no início da lista. Os elementos manipulados pelas listas
são do tipo 'void *', de forma que, através de 'type casting', é possível converte-los
para apontadores para outros tipos de dados. Tem como parâmetros o apontador p/ a lista e
o 'elemento' a ser inserido. Devolve 1 (TRUE) ou zero (FALSE) indicando sucesso ou falha
da operação.
Inserção de um 'elemento' no final da lista. Tem como parâmetros o apontador p/ a lista e
o 'elemento' a ser inserido. Devolve 1 (TRUE) ou zero (FALSE) indicando sucesso ou falha
da operação.
- Remoção do primeiro elemento de uma lista. Tem como parâmetro o apontador para a lista e devolve
o apontador para o elemento retirado da lista (ou NULL se a lista estiver vazia).
- Remoção do úlitmo elemento de uma lista. Tem como parâmetro o apontador para a lista e devolve
o apontador para o elemento retirado da lista (ou NULL se a lista estiver vazia).
- Devolve o elemento da lista (sem retirá-lo) a partir da sua posição na lista. Parâmetros:
apontador para o descritor da lista e a posiçào do elemento a ser devolvido (a partir de 0).
Devolve o apontador para o elemento indicado (ou NULL se este não existir).
-
Liberar uma lista: para cada nó da lista
- liberar o
'elemento' associado, através da função de
liberação passada como parâmetro
- liberar o
nó.
-
Devolve o 'tamanho' de uma lista (número de elementos). Parâmetro: apontador para o
descritor da lista.
Programa de testes
O programa testesAtiv_3.c(atualizado 02/09) realiza um conjunto de operações com listas com o objetivo de testar a biblioteca.
Data de Entrega:08/09/08