/*********************************************************** * Created: Sun 07 Jul 2019 08:45:10 PM -03 * * Author: Carla N. Lintzmayer, carla.negri@ufabc.edu.br * ***********************************************************/ #include #include "fila.h" struct fila { int cabeca; int cauda; int capacidade; int* fila; }; fila_t* cria_fila(int capacidade) { fila_t *F = malloc(sizeof(fila_t)); F->cabeca = 0; F->cauda = 0; F->capacidade = capacidade; F->fila = malloc(capacidade * sizeof(int)); return F; } void enfileira(fila_t *F, int elem) { if ((F->cabeca != 0 || F->cauda != F->capacidade) && F->cabeca != F->cauda+1) { if (F->cauda == F->capacidade-1) F->cauda = 0; else F->cauda++; F->fila[F->cauda] = elem; } } int desenfileira(fila_t *F) { int x = -1; if (F->cabeca != F->cauda) { x = F->fila[F->cabeca]; if (F->cabeca == F->capacidade-1) F->cabeca = 0; else F->cabeca++; } return x; } int fila_vazia(fila_t *F) { if (F->cabeca == F->cauda) return 1; return 0; }