C Fundamentals
Algorithms · data structures · cryptography · systems — pure C11, zero deps
Loading...
Searching...
No Matches
queue.h
Go to the documentation of this file.
1/**
2 * @file queue.h
3 * @brief FIFO queue of `int`, backed by a circular buffer.
4 *
5 * Circular buffer beats a linked list here: O(1) push/pop with a single
6 * malloc per resize, no per-element allocation. Doubles when full.
7 */
8
9#ifndef QUEUE_H
10#define QUEUE_H
11
12#include <stdbool.h>
13#include <stddef.h>
14
15typedef struct queue queue_t;
16
18void queue_destroy(queue_t *q);
19
20bool queue_enqueue(queue_t *q, int value);
21bool queue_dequeue(queue_t *q, int *out_value);
22bool queue_peek(const queue_t *q, int *out_value);
23
24size_t queue_size(const queue_t *q);
25bool queue_is_empty(const queue_t *q);
26
27#endif /* QUEUE_H */
void queue_destroy(queue_t *q)
Definition queue.c:33
size_t queue_size(const queue_t *q)
Definition queue.c:77
bool queue_enqueue(queue_t *q, int value)
Definition queue.c:54
queue_t * queue_create(void)
Definition queue.c:22
bool queue_peek(const queue_t *q, int *out_value)
Definition queue.c:71
bool queue_is_empty(const queue_t *q)
Definition queue.c:78
bool queue_dequeue(queue_t *q, int *out_value)
Definition queue.c:63
Definition queue.c:15