Repository navigation
Expand file tree
/
Copy pathqueue.h
More file actions
82 lines (69 loc) · 1.97 KB
/
Copy pathqueue.h
File metadata and controls
82 lines (69 loc) · 1.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/**
* @file queue.h
* @brief Array-based Circular Queue (FIFO - First-In, First-Out) implementation.
*
* Part of the C Learning & DSA Toolkit.
*/
#ifndef QUEUE_H
#define QUEUE_H
#include <stdbool.h>
#define QUEUE_MAX_CAPACITY 100
/**
* @brief Structure representing a fixed-size circular integer queue.
*/
typedef struct {
int data[QUEUE_MAX_CAPACITY];
int front; /**< Index of the front element */
int rear; /**< Index where next element will be enqueued */
int size; /**< Current number of elements in queue */
} Queue;
/**
* @brief Initializes an empty queue.
* @param q Pointer to Queue.
*/
void queue_init(Queue *q);
/**
* @brief Checks if queue is empty.
* @param q Pointer to Queue.
* @return true if empty, false otherwise.
*/
bool queue_is_empty(const Queue *q);
/**
* @brief Checks if queue is full.
* @param q Pointer to Queue.
* @return true if full, false otherwise.
*/
bool queue_is_full(const Queue *q);
/**
* @brief Adds an element to the rear of the queue.
* @param q Pointer to Queue.
* @param value Integer value to enqueue.
* @return true if successful, false if queue overflow.
*/
bool queue_enqueue(Queue *q, int value);
/**
* @brief Removes an element from the front of the queue.
* @param q Pointer to Queue.
* @param out_val Pointer to store dequeued value (can be NULL).
* @return true if successful, false if queue underflow.
*/
bool queue_dequeue(Queue *q, int *out_val);
/**
* @brief Inspects the front element without removing it.
* @param q Pointer to Queue.
* @param out_val Pointer to store front value.
* @return true if successful, false if queue is empty.
*/
bool queue_front(const Queue *q, int *out_val);
/**
* @brief Returns the current number of elements in the queue.
* @param q Pointer to Queue.
* @return Element count.
*/
int queue_size(const Queue *q);
/**
* @brief Prints queue contents from front to rear.
* @param q Pointer to Queue.
*/
void queue_print(const Queue *q);
#endif /* QUEUE_H */