Advertisement
IlanZiin

Fila estática C

Oct 22nd, 2024
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.43 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define TAMANHO_FILA (100)
  5.  
  6. // Estrutura para representar a fila
  7. struct Fila {
  8.     int items[TAMANHO_FILA];
  9.     int frente;
  10.     int atras;
  11. };
  12.  
  13. /* Verificar se a fila está vazia
  14.    @return int
  15.    0: fila nao vazia
  16.    1: fila vazia
  17. */
  18. int verificaFilaVazia(struct Fila *pFila) {
  19.     if (pFila->frente != pFila->atras) {
  20.         return 0;
  21.     }
  22.     return 1;
  23. }
  24.  
  25. // Inserção de items na fila
  26. void inserirItem(struct Fila* pFila, int valor) {
  27.     if (pFila->atras+1 >= TAMANHO_FILA) {
  28.         printf("\nA fila está cheia! aconteceu um estouro de fila.");
  29.         exit(1);
  30.     }
  31.  
  32.     pFila->items[pFila->atras++] = valor;
  33. }
  34.  
  35. // Retorna o tamanho da fila
  36. int tamanho(struct Fila* pFila) {
  37.     return pFila->atras;
  38. }
  39.  
  40. // Consulta o proximo item a ser acessado
  41. int frente(struct Fila* pFila) {
  42.     return pFila->items[0];
  43. }
  44.  
  45. // Remoção de elementos da fila
  46. int remover(struct Fila* pFila) {
  47.     int x, y;
  48.  
  49.     if (verificaFilaVazia(pFila)) {
  50.         printf("\nA fila esta vazia. Nao eh possivel remover itens!");
  51.         exit(1);
  52.     }
  53.  
  54.     x = frente(pFila);
  55.  
  56.     // Fazer a fila andar
  57.     for (int i = 0; i < tamanho(pFila); i++) {
  58.         pFila->items[i] = pFila->items[i + 1];
  59.     }
  60.  
  61.     pFila->atras--;
  62.  
  63.     return x;
  64. }
  65.  
  66. // Esvaziamento da fila
  67. void esvaziarFila(struct Fila* pFila) {
  68.     int tam = tamanho(pFila);
  69.     int i;
  70.  
  71.     printf("\nProcesso de esvaziamento da fila");
  72.     for (int i = 0; i < tam; i++) {
  73.         printf("\n Item %d retirado da fila", remover(pFila));
  74.     }
  75. }
  76.  
  77. void mostrarFila(struct Fila* pFila) {
  78.     printf("\n\nTem atualmente %d itens na fila\n----------------------", tamanho(pFila));
  79.     for (int i = 0; i < tamanho(pFila); i++) {
  80.         printf("\nItem %d da fila: %d", i, pFila->items[i]);
  81.     }
  82.     printf("\n----------------------\n");
  83. }
  84.  
  85. int main() {
  86.     // Criando fila vazia
  87.     struct Fila minhaFila;
  88.     minhaFila.frente = 0;
  89.     minhaFila.atras = 0;
  90.  
  91.     // Testando inserir item
  92.     inserirItem(&minhaFila, 30);
  93.     inserirItem(&minhaFila, -12);
  94.     inserirItem(&minhaFila, 5);
  95.     inserirItem(&minhaFila, 10);
  96.  
  97.     // Visualizar a fila inteira
  98.     mostrarFila(&minhaFila);
  99.    
  100.     // Testando verificar fila vazia
  101.     printf("\n%s", verificaFilaVazia(&minhaFila) ? "A fila esta vazia" : "A fila nao esta vazia");
  102.  
  103.     // O proximo da fila
  104.     printf("\nO proximo a ser atendido eh o: %d", frente(&minhaFila));
  105.  
  106.     printf("\nO elemento que foi removido foi: %d", remover(&minhaFila));
  107.  
  108.     mostrarFila(&minhaFila);
  109.  
  110.     esvaziarFila(&minhaFila);
  111.  
  112.     mostrarFila(&minhaFila);
  113.     return 0;
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement