Skip to content

SeniorPomidorDeveloper/Queue

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Queue for C

Библиотека реализующая структуру данных очередь на языке 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 - Указатель, указывающий на записываемые ланные

About

Lib queue for C language.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors