daniman

fila c/ vetor

Jun 12th, 2011
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.24 KB | None | 0 0
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5.  
  6. #define MAX 6
  7.  
  8.  
  9. typedef struct fila{
  10.     int chave[MAX];
  11.     int ini , fim , nelemens;  
  12. }NoFila;
  13.  
  14. void inicializa_fila(NoFila *f);
  15. int enfileira(NoFila *f , int x);
  16. int desenfileira(NoFila *f);
  17. void imprime(NoFila *f);
  18.  
  19. int main(){
  20.    
  21.     NoFila f;
  22.    
  23.     inicializa_fila(&f);   
  24.    
  25.     enfileira(&f , 2);
  26.     enfileira(&f , 4);
  27.     enfileira(&f , 5);
  28.    
  29.     desenfileira(&f);
  30.    
  31.     enfileira(&f , 7);
  32.    
  33.     imprime(&f);
  34.    
  35.     return 0;
  36. }
  37.  
  38. void inicializa_fila(NoFila *f){
  39.        
  40.     f->ini = 0;
  41.     f->fim = -1;
  42.     f->nelemens = 0;
  43. }
  44.  
  45. int enfileira(NoFila *f , int x){
  46.    
  47.     if(f->nelemens == MAX)  //Fila cheia
  48.         return 0;// False
  49.        
  50.     f->fim = (f->fim % MAX) + 1;   
  51.     f->chave[f->fim] = x; //FAz a fila circular
  52.     f->nelemens++;
  53.     return 1; //True
  54. }
  55.  
  56. int desenfileira(NoFila *f){
  57.    
  58.     int x;
  59.    
  60.     //Verificando se a fila esta cheia
  61.    
  62.     if(f->nelemens == 0){
  63.         return 0; //Fila vazia
  64.     }
  65.    
  66.     //printf("%d\n" , f->ini);
  67.    
  68.     x  = f->chave[f->ini];
  69.     f->ini = (f->ini % MAX) + 1;
  70.     f->nelemens --;
  71.     return 1;
  72.    
  73.     //printf("%d\n" , f->ini);
  74.     return x ;
  75.    
  76. }
  77.  
  78. void imprime(NoFila *f){
  79.    
  80.     int i , j = f->ini;
  81.    
  82.     for(i = 0 ; i < f->nelemens ; i++){
  83.         printf("%d\n" , f->chave[j]);
  84.         j = (j % MAX) + 1; 
  85.        
  86.     }
  87.  
  88. }
Advertisement
Add Comment
Please, Sign In to add comment