Estruturas Relatorios
O trajeto com as paragens será representado por uma estrutura do tipo Lista Encadeada (por não haver limite de paragens) em que as celulas (CelulaParagem) representam as paragens. Cada CelulaParagem será constituido por uma estrutura do tipo Fila Encadeada (por não haver limite de pessoas na paragem) que irá representar a fila de pessoas na paragem e por dois apontadores (ApontadorParagem) em que um apontará para a paragem anterior e outro para a proxima paragem.
Foi criado ainda uma celula a parte (CelulaAutocarro) que irá representar o único autocarro a funcionar na linha. A CelulaAutocarro será constituido por uma estrutura do tipo Lista Sequencial (por haver limite de pessoas no autocarro) e por um apontador (ApontadorAutocarro) que irá apontar para a paragem (CelulaParagem) em que se "encontra" o Autocarro.
Partimos de estruturas mais simples para depois implementar as mais complexas. Por isso primeiramente temos a estrutura de tipo TipoItem composto somente pela estrutura char individuo. Ela vai representar a informação dentro das CelulaParagem que vai representar as pessoas na paragem.
typedef struct TpItem { char individuo;
}TipoItem;
A estrutura a seguir designada de CelulaPessoa representa as celulas dentro da fila de cada CelulaParagem. A CelulaPessoa é constituida por uma estrutura do tipo TipoItem Individuos e por um apontador ApontadorPessoa que aponta para a pessoa a seguir dentro da fila. typedef struct CelulaPessoa *ApontadorPessoa;
struct CelulaPessoa{ TipoItem Individuos; ApontadorPessoa prox;
}CelulaPessoa;
O tipo de estrutura do tipo TipoFila representa as filas de pessoas dentro de cada paragem (CelulaParagem). É constituido por dois ApontadorPessoa (Frente e Final) e por uma estrutura do tipo int Tamanho.
typedef struct TpFila{
ApontadorPessoa Frente;