data-structures · intermediate · ~15 min
Modular indexing for a ring buffer.
Given
typedef struct { int *data; size_t cap, len, head; } iqueue_t;
implement a FIFO queue with fixed capacity, using a circular buffer. Functions:
int queue_init(iqueue_t *q, size_t cap) — allocate data to size cap, return 0 or -1.void queue_free(iqueue_t *q)int queue_enqueue(iqueue_t *q, int v) — return 0 on success, -1 if full.int queue_dequeue(iqueue_t *q, int *out) — return 0 on success, -1 if empty.#include <stdlib.h>
#include <stddef.h>
int queue_init(iqueue_t *q, size_t cap){ /* TODO */ return -1; }
void queue_free(iqueue_t *q){ /* TODO */ }
int queue_enqueue(iqueue_t *q, int v){ /* TODO */ return -1; }
int queue_dequeue(iqueue_t *q, int *out){ /* TODO */ return -1; }
Solve this exercise in the browser editor — compile and run against the test harness, no setup required.