libstd v0.1.0
Loading...
Searching...
No Matches
queue.h
Go to the documentation of this file.
1#ifndef QUEUE_H_
2#define QUEUE_H_
3
4#include <stdbool.h>
5#include <stddef.h>
6
10typedef struct QueueNode {
11 void* data;
12 struct QueueNode* next;
14
18typedef struct {
21 size_t element_size;
22 size_t size;
23} Queue;
24
31void queue_init(Queue* queue, size_t element_size);
32
39void queue_destroy(Queue* queue);
40
49bool queue_push(Queue* queue, const void* data);
50
58bool queue_pop(Queue* queue);
59
67void* queue_front(Queue* queue);
68
76void* queue_back(Queue* queue);
77
87int queue_search(Queue* queue, int (*cmp_fn)(void*, void*), void* key);
88
95int queue_size(const Queue* queue);
96
97#endif // QUEUE_H_
bool queue_push(Queue *queue, const void *data)
Enqueues (pushes) a new element to the back of the queue.
Definition queue.c:62
bool queue_pop(Queue *queue)
Dequeues (removes) the element at the front of the queue.
Definition queue.c:84
void queue_init(Queue *queue, size_t element_size)
Initializes an empty Queue.
Definition queue.c:29
void * queue_back(Queue *queue)
Accesses the element at the back of the queue without removing it.
Definition queue.c:110
int queue_search(Queue *queue, int(*cmp_fn)(void *, void *), void *key)
Searches for an element in the queue using a comparison function.
Definition queue.c:118
void * queue_front(Queue *queue)
Accesses the element at the front of the queue without removing it.
Definition queue.c:102
int queue_size(const Queue *queue)
Retrieves the total number of elements currently stored in the queue.
Definition queue.c:138
void queue_destroy(Queue *queue)
Destroys the Queue and frees all allocated nodes and their associated data.
Definition queue.c:40
Node structure representing an element in the queue.
Definition queue.h:10
struct QueueNode * next
Definition queue.h:12
void * data
Definition queue.h:11
Structure representing a generic linked-list-based Queue.
Definition queue.h:18
size_t element_size
Definition queue.h:21
size_t size
Definition queue.h:22
QueueNode * back
Definition queue.h:20
QueueNode * front
Definition queue.h:19