Online C Compiler
Abrir no compilador

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.

Abrir no compilador

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 compilador

Saí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.