Representação de filas em listas encadeadas

Considere uma fila em listas encadeadas representada por

typedef struct celula {
  int dado;
  struct celula *prox;
} celula;

Sua tarefa nesse exercício é implementar as operações de enfileiramento e desenfileiramento numa fila circular. Para tanto, você deve submeter um arquivo contendo apenas:

  1. Os #include necessários para execução das instruções utilizadas no seu código.

  2. A definição da struct celula.

  3. Uma função
void enfileira (celula **f, int x);

que enfileira o elemento x na fila circular com nó cabeça f.

  1. Uma função
int desenfileira (celula *f, int *y);

que desenfileira um elemento da fila circular. Sua função deve