|
C Fundamentals
Algorithms · data structures · cryptography · systems — pure C11, zero deps
|
FIFO queue of int, backed by a circular buffer.
More...
#include <stdbool.h>#include <stddef.h>Go to the source code of this file.
Typedefs | |
| typedef struct queue | queue_t |
Functions | |
| queue_t * | queue_create (void) |
| bool | queue_dequeue (queue_t *q, int *out_value) |
| void | queue_destroy (queue_t *q) |
| bool | queue_enqueue (queue_t *q, int value) |
| bool | queue_is_empty (const queue_t *q) |
| bool | queue_peek (const queue_t *q, int *out_value) |
| size_t | queue_size (const queue_t *q) |
FIFO queue of int, backed by a circular buffer.
Circular buffer beats a linked list here: O(1) push/pop with a single malloc per resize, no per-element allocation. Doubles when full.
Definition in file queue.h.
| queue_t * queue_create | ( | void | ) |
Definition at line 22 of file queue.c.
References queue::capacity, queue::data, queue::head, QUEUE_INITIAL_CAP, and queue::size.
| bool queue_dequeue | ( | queue_t * | q, |
| int * | out_value | ||
| ) |
Definition at line 63 of file queue.c.
References queue::capacity, queue::data, queue::head, and queue::size.
| void queue_destroy | ( | queue_t * | q | ) |
Definition at line 33 of file queue.c.
References queue::data.
| bool queue_enqueue | ( | queue_t * | q, |
| int | value | ||
| ) |
Definition at line 54 of file queue.c.
References queue::capacity, queue::data, queue::head, queue_grow(), and queue::size.
| bool queue_is_empty | ( | const queue_t * | q | ) |
Definition at line 78 of file queue.c.
References queue::size.
| bool queue_peek | ( | const queue_t * | q, |
| int * | out_value | ||
| ) |
Definition at line 71 of file queue.c.
References queue::data, queue::head, and queue::size.
| size_t queue_size | ( | const queue_t * | q | ) |
Definition at line 77 of file queue.c.
References queue::size.