Online C Compiler
Abrir en el compilador

Edición didáctica en español. El código y sus salidas conservan el original.

Cola en C: primero en entrar, primero en salir

Gestiona elementos pendientes con índices de entrada y salida.

Abrir en el compilador

Cola en C: primero en entrar, primero en salir
Gestiona elementos pendientes con índices de entrada y salida.

Una cola sigue el orden FIFO. enqueue añade al final y dequeue retira del principio. Mantén una representación clara de cola vacía y llena, sin confundir un índice válido con ausencia de datos.

Una cola circular reutiliza las posiciones liberadas mediante índices que vuelven al principio. Un contador de elementos o una posición reservada permite distinguir lleno de vacío. Una cola lineal sencilla puede agotar el extremo aunque haya posiciones libres al comienzo.

Comprueba capacidad y estado antes de cada operación. Prueba una secuencia que atraviese el final del buffer y verifica que se conserve el orden de llegada.

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 en el compilador

Salida esperada

Dequeued: 100
Dequeued: 200

Preguntas frecuentes

¿Por qué el código y la salida siguen en inglés?

Las palabras clave, los identificadores y los textos que verifican las pruebas se conservan para no cambiar el programa. Las explicaciones y los controles están traducidos.