Библиотека реализующая структуру данных очередь на языке C. Структура данных представляет собой двусвязный список.
Структура данных представленная в файле structs.c:
typedef struct Node_Queue // Узел списка
{
void *data; // Данные узла
struct Node_Queue *next; // Следующий элемент списка
struct Node_Queue *prev; // Преведущий элемент списка
} Node_Queue;
typedef struct Queue // Очередь
{
size_t size; // Размер одного экземпляра записываемых данных
size_t len; // Длина очереди
Node_Queue *head; // Головной элемент очереди
Node_Queue *tail; // Задний элемент очереди
} Queue;
typedef Node_Queue * Iter_Queue; // Итератор очередиint init_Queue(Queue **queue, const size_t size);queue - Указатель на указатель, который будет указывать на экземпляр структуры очереди
size - Размер одного экземпляра записываемых данных
В случае ошибки возвращает код ошибки INIT_QUEUE_ERROR. Иначе SUCCESS.
Iter_Queue push_Queue(Queue *queue, const void *data);queue - Указатель, указывающий на экземпляр структуры очереди
data - Указатель, указывающий на записываемые в очередь данные
В случае успешного выполнения операции возвращает итератор указывающий на узел в котором хранится новая информация. В случае ошибки возвращает NULL.
Iter_Queue get_Queue(const Queue *queue);queue - Указатель, указывающий на экземпляр структуры очереди
В случае успешного выполнения операции возвращает итератор указывающий на головной узел. В случае ошибки возвращает NULL.
Iter_Queue erase_Queue(Queue *queue); // Удалить элемент из очередиqueue - Указатель, указывающий на экземпляр структуры очереди
В случае успешного выполнения операции возвращает итератор указывающий на новый головной узел. В случае ошибки возвращает NULL.
Iter_Queue pop_Queue(Queue *queue, void **data); // Получить и удалить элемент из очередиqueue - Указатель, указывающий на экземпляр структуры очереди
data - Указаетль, указывающий на информацию из удалённого узла
В случае успешного выполнения операции возвращает итератор указывающий на новый головной узел. В случае ошибки возвращает NULL.
void free_Queue(Queue *queue);queue - Указатель, указывающий на экземпляр структуры очереди
size_t get_len_Queue(const Queue *queue); // Получить длину очеред
bool is_empty_Queue(const Queue *queue); // Проверить, пуста ли очередь
queue - Указатель, указывающий на экземпляр структуры очереди
Iter_Queue next_Iter_Queue(const Iter_Queue iter); // Следующий итератор
Iter_Queue prev_Iter_Queue(const Iter_Queue iter); // Предыдущий итератор
Iter_Queue get_head_Iter_Queue(const Queue *queue); // Получить итератор головного элемента очереди
Iter_Queue get_tail_Iter_Queue(const Queue *queue); // Получить заднего элемента очереди
void *get_data(const Iter_Queue iter); // Получить данные из итератораiter - Итератор, относительно которого происходит выполнение операции
queue - Указатель, указывающий на экземпляр структуры очереди
Iter_Queue set_data_Iter_Queue(Queue *queue, Iter_Queue iter, const void *data); // Установить данные в итератореiter - Итератор, относительно которого происходит выполнение операции
queue - Указатель, указывающий на экземпляр структуры очереди
data - Указатель, указывающий на записываемые ланные