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
heades de donde tomas;tail, donde agregas.- El módulo hace circular el búfer.
- Llevar un conteo distingue vacía de llena.
Palabras clave y builtins usados aquí
ifintreturnsize_tstructtypedef
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.
Paso 5 de 5 en Listas y pilas; paso 10 de 20 en Estructuras de datos y algoritmos.