Advertisement
tutorfree

filaFIFO.c

Apr 6th, 2016
401
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.50 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. //Se o sistema for Windows adiciona determinada biblioteca e definindo comandos
  5. #ifdef WIN32
  6.     #include <conio.h>
  7.     #define LIMPA_TELA system("cls")
  8. //Senão for Windows (se for Linux)
  9. #else
  10.     #include <ncurses.h>
  11.     #define LIMPA_TELA system("/usr/bin/clear")
  12. #endif
  13.  
  14. //Espera 3 segundos
  15. #define ESPERA sleep(2)
  16.  
  17. //Estrutura da lista que será criada
  18. typedef struct Fila
  19. {
  20.     int valor;
  21.     struct Fila *proximo;
  22. } Dados;
  23.  
  24. void insere();
  25. void exclui();
  26. void mostra();
  27. void mostra_erro();
  28.  
  29. //Inicializando os dados da lista
  30. Dados *principal = NULL;
  31. Dados *final = NULL;
  32.  
  33. int main()
  34. {
  35.     char escolha;
  36.     //Laço que irá mostrar o menu esperando uma opção (char)
  37.     do
  38.     {
  39.         //Limpando a tela, e mostrando o menu
  40.         LIMPA_TELA;
  41.         printf("Escolha uma opção: \n");
  42.         printf("\t1 - Inserir valor na Fila\n");
  43.         printf("\t2 - Remover valor da Fila\n");
  44.         printf("\t3 - Mostrar valores da Fila\n");
  45.         printf("\t9 - Sair\n\n");
  46.         printf("Resposta: ");
  47.         scanf("%c", &escolha);
  48.  
  49.         switch(escolha)
  50.         {
  51.             //Inserindo
  52.             case '1':
  53.                 insere();
  54.                 break;
  55.             //Excluindo
  56.             case '2':
  57.                 if(principal!=NULL)
  58.                 {
  59.                     exclui();
  60.                 }
  61.                 else
  62.                 {
  63.                     printf("\nA Fila está vazia!\n");
  64.                     getchar();
  65.                 }
  66.                 break;
  67.  
  68.             case '3': //Mostrando
  69.                 if(principal!=NULL)
  70.                 {
  71.                     mostra();
  72.                 }
  73.                 else
  74.                 {
  75.                     printf("\nA Fila está vazia!\n");
  76.                     getchar();
  77.                 }
  78.                 break;
  79.  
  80.             case '9':
  81.                 printf("------>Terminal de Informação<------\n\n");
  82.                 ESPERA;
  83.                 exit(0);
  84.                 break;
  85.             //Se foi algum valor inválido
  86.             default:
  87.                 mostra_erro();
  88.                 break;
  89.         }
  90.         //Impedindo sujeira na gravação da escolha
  91.         getchar();
  92.     }
  93.     while (escolha > 0); //Loop Infinito
  94. }
  95.  
  96. //Inserção
  97. void insere()
  98. {
  99.     int val;
  100.     LIMPA_TELA;
  101.  
  102.     printf("Insira o valor a ser inserido: ");
  103.     scanf("%d",&val);
  104.     Dados *atual = (Dados*)malloc(sizeof(Dados));
  105.     atual -> valor = val;
  106.     atual -> proximo = NULL;
  107.  
  108.     //se o principal estiver vazio, será o atual
  109.     if(principal == NULL)
  110.     {
  111.         principal = final = atual;
  112.     }
  113.     //senão, o próximo valor que será o atual
  114.     else
  115.     {
  116.         final->proximo=atual;
  117.         final=atual;
  118.     }
  119.     printf("\nValor inserido!\n");
  120.     getchar();
  121. }
  122.  
  123. //Exclusão
  124. void exclui()
  125. {
  126.     Dados *auxiliar;
  127.     printf("\nExclusão: \n");
  128.  
  129.     //o auxiliar será o próximo da principal
  130.     auxiliar=principal->proximo;
  131.     //limpando a principal
  132.     free(principal);
  133.     //a principal será a auxiliar
  134.     principal=auxiliar;
  135.     printf("\nValor excluido!\n");
  136.     getchar();
  137. }
  138.  
  139. //Mostrando
  140. void mostra()
  141. {
  142.     Dados *nova=principal;
  143.     LIMPA_TELA;
  144.  
  145.     //laço de repetição para mostrar os valores
  146.     for (; nova != NULL; nova = nova->proximo)
  147.     {
  148.         printf("%5d", nova->valor);
  149.     }
  150.     getchar();
  151. }
  152.  
  153. void mostra_erro()
  154. {
  155.     LIMPA_TELA;
  156.     printf("\nDigite uma opção válida!\n");
  157.     getchar();
  158. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement