Reimplementação do Problema dos Devedores e Credores utilizando um tipo abstrato de dados (TAD) para a representação da Lista de Nomes.

Reimplemente um programa para resolver o problema da aplicação que gerencia uma lista de devedores e uma lista de credores de uma empresa.


Definição do Tipo Lista

Você vai criar um tipo lista que conterá a seguinte informação:

Um vetor de ponteiros para caracter, que conterá ponteiros para os nomes dessa lista.

Um campo inteiro, que dirá qual é o último elemento atual dessa lista.

Isso pode ter a seguinte aparência:

struct tipoListaComVetor {

};

Essa definição voce colocará em um arquivo tipo headerfile, que se chamará por exemplo, listaComVetor.h


Módulo Lista (implementação das funções)

As funções de manipulação da lista você colocará em um arquivo à parte, onde só estas funções serão implementadas. Este arquivo deverá ser homônimo do tipo estruturado derivado que você criou acima, p.ex.: listaComVetor.c. As funções deverão ser alteradas de modo que, ao invés de você passar um ponteiro para o vetor de ponteiros para string e um ponteiro para o último, você só passe um ponteiro para a estrutura tipoListaComVetor.

Ex.:

int incluiEmOrdem( tipoListaComVetor *lista, char *nome)

{

}


Implementação da Aplicação Utilizando o TAD

Em um programa principal você utilizará esta definição do tipo lista, criando uma variável global do tipo tipoListaComVetor para cada uma das listas, a de credores e a de devedores.

Toda a manipulação de dados que é típica da aplicação, como menus,etc, você colocará neste arquivo de programa principal.

O headerfile deve ser incluído tanto no programa principal como no módulo lista pois em AMBOS este tipo deverá ser conhecido, usando-se para isto um include de arquivo em uma posição não padrão:

#include "listaComVetor.h"


A compilação do programa final você pode executar através da chamada ao compilador passando tanto o programa principal como o módulo lista como nomes de arquivos a serem compilados.

cc -o devecred listaComVetor.c principal.c

O compilador se encarregará de resolver as chamadas a funções e de linkar tudo junto em um único programa-objeto chamado devecred.