typestar

Una cola sobre un arreglo en C

Dos índices se persiguen alrededor de un búfer fijo.

#define QUEUE_CAP 8

typedef struct {
    int items[QUEUE_CAP];
    size_t head;
    size_t count;
} Queue;

int enqueue(Queue *q, int value) {
    if (q->count == QUEUE_CAP) {
        return 0;
    }
    size_t tail = (q->head + q->count) % QUEUE_CAP;
    q->items[tail] = value;
    q->count++;
    return 1;
}

int dequeue(Queue *q, int *out) {
    if (q->count == 0) {
        return 0;
    }
    *out = q->items[q->head];
    q->head = (q->head + 1) % QUEUE_CAP;
    q->count--;
    return 1;
}

Cómo funciona

  1. head es de donde tomas; tail, donde agregas.
  2. El módulo hace circular el búfer.
  3. Llevar un conteo distingue vacía de llena.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
27
Caracteres a escribir
423
Tokens
152
Ritmo de tres estrellas
100 tpm

Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 91 segundos.

Escribe este fragmento

Paso 5 de 5 en Listas y pilas; paso 10 de 20 en Estructuras de datos y algoritmos.

← Anterior Siguiente →