C Fundamentals
Algorithms · data structures · cryptography · systems — pure C11, zero deps
Loading...
Searching...
No Matches
queue.h File Reference

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_tqueue_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)
 

Detailed Description

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.

Typedef Documentation

◆ queue_t

typedef struct queue queue_t

Definition at line 15 of file queue.h.

Function Documentation

◆ queue_create()

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.

◆ queue_dequeue()

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.

◆ queue_destroy()

void queue_destroy ( queue_t q)

Definition at line 33 of file queue.c.

References queue::data.

◆ queue_enqueue()

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.

◆ queue_is_empty()

bool queue_is_empty ( const queue_t q)

Definition at line 78 of file queue.c.

References queue::size.

◆ queue_peek()

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.

◆ queue_size()

size_t queue_size ( const queue_t q)

Definition at line 77 of file queue.c.

References queue::size.