Advertisement
tutorfree

filaCircular.h

Mar 17th, 2016
401
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.58 KB | None | 0 0
  1. #define N 10
  2.  
  3. typedef struct
  4. {
  5.     int *vetor;//ponteiro para o vetor
  6.     int tamVetor;//tamanho do vetor
  7.     int tamFila;//tamanho da fila
  8.     int inicio;
  9.     int fim;
  10. }Fila;
  11.  
  12. Fila *fila_cria()
  13. {
  14.      Fila *f=(Fila*)malloc(sizeof(Fila));
  15.      f->inicio=0;
  16.      f->fim=0;
  17.      f->tamFila=0;
  18.      f->tamVetor=N;
  19.      f->vetor=(int*)malloc(sizeof(int)*N);
  20.      return f;
  21. }
  22.  
  23. int fila_vazia(Fila *f)
  24. {
  25.     if(f->tamFila==0)
  26.        return 1;
  27.     return 0;
  28. }
  29.  
  30. //fila circular
  31. void fila_insere(Fila *f, int n)
  32. {
  33.      if(f->tamFila < f->tamVetor)
  34.      { //há espaco
  35.         if(f->fim==f->tamVetor)
  36.           f->fim=0;//usa aspecto circular
  37.         f->vetor[f->fim]=n;
  38.         f->fim++;
  39.         f->tamFila++;
  40.      }
  41.      else
  42.         printf("\nFila Cheia!!");
  43. }
  44.            
  45. int fila_retira(Fila *f)
  46. {
  47.     int n;
  48.     n=f->vetor[f->inicio];
  49.     if(f->inicio==f->tamVetor-1)// era o ultimo
  50.       f->inicio=0;
  51.     else
  52.       f->inicio++;
  53.     f->tamFila--;
  54.     return n;
  55. }
  56.            
  57. void fila_libera(Fila *f)
  58. {
  59.      free(f->vetor);
  60.      free(f);
  61. }
  62.        
  63. void mostra_fila(Fila *f)
  64. {
  65.      int i;
  66.      if(fila_vazia(f))
  67.        printf("Fila vazia!\n");
  68.      else
  69.      {
  70.         if(f->inicio < f->fim)
  71.         {
  72.             //nao circulou
  73.             for(i=f->inicio; i< f->fim;i++)
  74.                 printf("%d\t", f->vetor[i]);
  75.         }
  76.         else
  77.         {
  78.             //circulou
  79.             for(i=f->inicio; i<f->tamVetor;i++)
  80.                 printf("%d\t", f->vetor[i]);
  81.             for(i=0;i<f->fim;i++)
  82.                 printf("%d\t", f->vetor[i]);
  83.         }
  84.      }
  85.    printf("\n");
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement