o_paulooo

Fila em Sala (terminar)

Sep 11th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.58 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct elem
  5. {
  6.     int dado;
  7.     struct elem *prox;
  8. }Tfila;
  9.  
  10. typedef struct
  11. {
  12.     Tfila *inicio;
  13.     Tfila *fim;
  14. }fila;
  15.  
  16. void criarfila(fila *f)
  17. {
  18.     f->inicio = NULL;
  19.     f->fim = NULL;
  20. }
  21.  
  22. int fila_vazia(fila *f)
  23. {
  24.     if(f->inicio == NULL && f->fim == NULL)
  25.         return 1;
  26.  
  27.     else
  28.         return 0;
  29. }
  30.  
  31. void enfila(fila *f)
  32. {
  33.     int valor;
  34.  
  35.     printf("Digite o valor a ser enfilado:");
  36.     scanf("%d", &valor);
  37.  
  38.     Tfila *novo = (Tfila*)malloc(sizeof(Tfila));
  39.  
  40.     novo->dado = valor;     //a nova fila recebe os dados de valor
  41.     f->inicio = *novo;      //o endereço do inicio da fila principal recebe o endereço da nova
  42.     novo->prox = NULL;      //o endereço do próximo da nova fila recebe vazio
  43.     f->fim = *novo;         //o fim da fila prncipal recebe o endereço da nova pilha
  44. }
  45.  
  46.  
  47.  
  48. int desenfila(fila *f)
  49. {
  50.     int x;                      //criar uma auxiliar1 para o valor
  51.     Tfila *aux;                 //criar a fila auxiliar2
  52.  
  53.     aux = f->fim;               //endereço da auxiliar2 é igual ao endereço do fim da fila
  54.     x = aux->dado;              //a auxiliar1 recebe o valor do dado da auxiliar2
  55.  
  56.     f->inicio = aux->prox;      //o endereço do inicio da fila é o endereço do próximo da auxiliar2
  57.     aux->prox = NULL;           //o endereço do próximo da auxiliar é vazio
  58.  
  59.     free(aux);                  //liberar a memória da auxiliar2
  60.     return 0;
  61. }
  62.  
  63.  
  64. void mostrar_fila(fila *f)
  65. {
  66.     Tfila *aux;
  67.     int valor;
  68.  
  69.     aux = f->inicio;
  70.  
  71.     printf("\nFILA: ");
  72.     while(aux!= NULL)
  73.     {
  74.         valor = aux->dado;
  75.         printf("%4d", valor);
  76.         aux = aux->prox;
  77.     }
  78.  
  79.  
  80.  
  81. }
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88. void menu()
  89. {
  90.     int opc;
  91.     fila *f;
  92.     criarfila(&f);
  93.  
  94.  
  95.  
  96.     do
  97.     {
  98.         printf("1- Enfila\n");
  99.         printf("2- Desenfila\n");
  100.         printf("3- Mostra\n");
  101.         printf("4- Fim\n\n");
  102.         scanf("%d", &opc);
  103.  
  104.         switch (opc)
  105.         {
  106.             case 1:
  107.                 {
  108.                 if(fila_vazia(&f))
  109.                     enfila(&f);
  110.                 else
  111.                     printf("A fila está vaiza!!!");
  112.                 }
  113.                 break;
  114.  
  115.             case 2:
  116.                 {
  117.                     desenfila(&f);
  118.                 }
  119.  
  120.                 break;
  121.  
  122.             case 3:
  123.                 {
  124.                    mostra(&f);
  125.                 }
  126.  
  127.                 break;
  128.  
  129.         }
  130.  
  131.     }while(opc !=4);
  132.  
  133.     }
  134.  
  135.  
  136.  
  137.  
  138. int main()
  139. {
  140.     menu();
  141.  
  142.     printf("\n");
  143.  
  144.     return 0;
  145. }
Add Comment
Please, Sign In to add comment