TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

ATPS Estrutura de Dados Etapas 3 e 4

Por:   •  26/5/2016  •  Trabalho acadêmico  •  2.597 Palavras (11 Páginas)  •  336 Visualizações

Página 1 de 11

Estruturas de Dados

Pilhas, Filas e Grafos

3. Filas e Pilhas

        3.1 Implementação da estrutura taxiamento

#include

#include

#include

#include

#include

typedef struct taxi{

   int codVoo;

   char modAviao[21];

   char empresa[21];

   char horaSaida[6];

   struct taxi* anterior, * proximo;

}Taxi;

int limiteFila, tamFila;

Taxi* criaFila(){

   tamFila = 0;

   Taxi* sentinela = (Taxi*) malloc(sizeof(Taxi));

   sentinela->codVoo = 0;

   sentinela->anterior = sentinela;

   sentinela->proximo = sentinela;

   return(sentinela);

}// criaFila()

int filaVazia(Taxi* sentinela){

   return(sentinela->proximo == sentinela);// 1 para fila vazia ou zero para fila não-        vazia.

}// filaVazia()

int filaCheia(void){

   return(tamFila == limiteFila);// 1 para fila cheia ou zero para fila não-cheia.

}// filaCheia()

int cadastrarTaxiamento(Taxi* sentinela, int num){

   if(!filaCheia()){

      Taxi* fimFila, *aux;

      fimFila = (Taxi*) malloc(sizeof(Taxi));

      aux = sentinela->anterior;

      sentinela->anterior = fimFila;

      fimFila->anterior = aux;

      fimFila->proximo = sentinela;

      aux->proximo = fimFila;

      fimFila->codVoo = num;

      printf("Digite o modelo da aeronave: ");gets(fimFila->modAviao);fflush(stdin);

      printf("Digite o nome da empresa aerea: ");gets(fimFila->empresa);fflush(stdin);

      printf("Digite a hora de decolagem : ");scanf("%s", &fimFila->horaSaida);fflush(stdin);

      tamFila++;// Incrementa o tamanho da fila.

      return(fimFila->codVoo);

   }

   else return(0);// Fila cheia.

}// cadastrarTaxiamento()

int autorizaTaxiamento(Taxi* sentinela){

   if(!filaVazia(sentinela)){

      int cod;

      Taxi* inicioFila, *aux;

      inicioFila = sentinela->proximo;

      sentinela = inicioFila->anterior;

      aux = inicioFila->proximo;

      sentinela->proximo = aux;

      aux->anterior = sentinela;

      cod = inicioFila->codVoo;

      printf("Modelo da aeronave: %s\n", inicioFila->modAviao);

      printf("Empresa aerea: %s\n", inicioFila->empresa);

      printf("Horario de decolagem: %s\n", inicioFila->horaSaida);

      free(inicioFila);

      tamFila--;// Decrementa o tamanho da fila.

      return(cod);

   }

   else return(0);// Fila vazia.

}// autorizaTaxiamento()

int menu(){

         int op = 0;

        system("cls");

   printf("\n");

   printf("  ------------ VOEBEM ------------ \n");

   printf(" |                                |\n");

   printf(" | Menu Principal --------------- |\n");

   printf(" | Escolha uma opcao              |\n");

   printf(" | 1. Nova fila de taxiamento     |\n");

   printf(" | 2. Cadastrar Taxiamento        |\n");

   printf(" | 3. Autorizar Taxiamento        |\n");

   printf(" | 0. Sair                        |\n");

   printf("  -------------------------------- \n");

   printf(" Opcao: ");

   scanf("%i", &op);

   fflush(stdin);

   return(op);

}// menu()

int main(){

   setlocale(LC_ALL, "portuguese");

   system("color f0");

   Taxi* filaTaxi;/* Cria um ponteiro para a fila.*/

   int temp;

   //int num;

   int op = 0;

   do{

      op = menu();

      switch(op){

         case 1:

            system("cls");

            printf("\nCriar nova fila de taxiamento!\n");

            printf("\nDigite o tamanho maximo da fila de taxiamento: ");

            scanf("%i", &limiteFila);

            fflush(stdin);

            filaTaxi = criaFila();

            if(filaTaxi) printf("\nFila para %i aeronaves criada com sucesso!!!\n\n\n",         limiteFila);

            else printf("\nErro!! Não foi possivel criar a fila. Por favor, tente         novamente...\n\n\n");

            system("pause");

            break;

         case 2:

            system("cls");

            printf("\nCadastrar novo taxiamento!\n");

            printf("\nDigite o numero do voo: ");

            scanf("%i", &temp);

            fflush(stdin);

            temp = cadastrarTaxiamento(filaTaxi, temp);

            if (temp != 0) printf("\nVoo numero %i foi enfileirado com sucesso!\n\n\n",         temp);

            else printf("\nA fila esta cheia!\n\n\n");

            system("pause");

            break;

         case 3:

            system("cls");

            printf("\nAutorizar Taxiamento!\n");

            temp = autorizaTaxiamento(filaTaxi);

...

Baixar como (para membros premium)  txt (12.1 Kb)   pdf (383.9 Kb)   docx (49.1 Kb)  
Continuar por mais 10 páginas »
Disponível apenas no TrabalhosGratuitos.com