Edição didática em português. O código e suas saídas preservam o original.
Fila em C: primeiro a entrar, primeiro a sair
Gerencie elementos pendentes com índices de entrada e saída.

Uma fila segue a ordem FIFO. enqueue adiciona ao final e dequeue remove do início. Mantenha uma representação clara de fila vazia e cheia, sem confundir um índice válido com ausência de dados.
Uma fila circular reutiliza posições liberadas com índices que retornam ao início. Um contador de elementos ou uma posição reservada permite distinguir cheio de vazio. Uma fila linear simples pode esgotar o final mesmo com posições livres no começo.
Verifique capacidade e estado antes de cada operação. Teste uma sequência que atravesse o final do buffer e confira se a ordem de chegada é preservada.
Código C
#include <stdio.h>
#define SIZE 5
typedef struct {
int items[SIZE];
int front;
int rear;
} Queue;
void initQueue(Queue *q) {
q->front = -1;
q->rear = -1;
}
int isFull(Queue *q) { return q->rear == SIZE - 1; }
int isEmpty(Queue *q) { return q->front == -1 || q->front > q->rear; }
void enqueue(Queue *q, int val) {
if (isFull(q)) {
printf("Queue Full!\n");
return;
}
if (q->front == -1) q->front = 0;
q->items[++(q->rear)] = val;
}
int dequeue(Queue *q) {
if (isEmpty(q)) {
printf("Queue Empty!\n");
return -1;
}
return q->items[(q->front)++];
}
int main() {
Queue q;
initQueue(&q);
enqueue(&q, 100);
enqueue(&q, 200);
enqueue(&q, 300);
printf("Dequeued: %d\n", dequeue(&q));
printf("Dequeued: %d\n", dequeue(&q));
return 0;
}Abrir no compiladorSaída esperada
Dequeued: 100 Dequeued: 200
Perguntas frequentes
Por que o código e a saída continuam em inglês?
Palavras-chave, identificadores e textos verificados pelos testes são preservados para não alterar o programa. As explicações e os controles estão traduzidos.