Advertisement
dudulagoeiro

[ED] Fila Sequencial

Apr 26th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.21 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX 5
  4.  
  5.  
  6. typedef struct fila{
  7.     int * valor;
  8.     int topo;
  9.     int qtd;
  10. } Fila;
  11.  
  12. Fila * criaFila(){
  13.     Fila * f= (Fila*)malloc(sizeof(Fila));
  14.     f->valor = (int*)(malloc(MAX*sizeof(int)));
  15.     f->topo = 0;
  16.     f->qtd = 0;
  17.     return f;
  18. }
  19.  
  20. void push(int n, Fila *f){
  21.  
  22.         f->valor[(f->topo)%MAX] = n;
  23.         f->topo++;
  24.         f->topo = (f->topo)%MAX;
  25.         f->qtd++;
  26.  
  27. }
  28.  
  29. int pop(Fila *f){
  30.     int aux = -1;
  31.     if(!filaVazia(f)){
  32.         aux = f->valor[f->topo-f->qtd];
  33.         f->qtd--;
  34.         return aux;
  35.     }
  36.     return aux;
  37. }
  38.  
  39. int filaVazia(Fila * f){
  40.     return f->qtd == 0;
  41. }
  42.  
  43. int filaCheia(Fila * f){
  44.     return f->qtd == MAX;
  45. }
  46.  
  47. void printaFila(Fila *f){
  48.     printf("Fila: ");
  49.     for(int i = f->topo + MAX - f->qtd; i<MAX; i++){
  50.         printf("%d ", f->valor[i]);
  51.     }
  52.     for(int i = 0; i<f->topo; i++){
  53.         printf("%d ", f->valor[i]);
  54.     }
  55.     printf("\n");
  56. }
  57.  
  58.  
  59. int main(){
  60.     Fila * f = criaFila();
  61.  
  62.     push(1, f);
  63.     push(2, f);
  64.     push(3, f);
  65.     push(4, f);
  66.     push(5, f);
  67.     pop(f);
  68.     pop(f);
  69.     push(1, f);
  70.     push(1, f);
  71.     pop(f);
  72.     push(1, f);
  73.  
  74.     printaFila(f);
  75.  
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement