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':

    1. Criação de uma lista. Devolve o apontador para o descritor da lista.
    2. 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.
    3. 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.
    4. 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).
    5. 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).
    6. 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).
    7. Liberar uma lista: para cada nó da lista
      1. liberar o 'elemento' associado, através da função de liberação passada como parâmetro 
      2. liberar o nó.
    8. 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