Структура данных deque в языке программирования C
Deque в C является структурой данных, которая представляет собой двухстороннюю (или двунаправленную) очередь. Она предоставляет операции для вставки и удаления элементов с обеих сторон очереди. Deque расшифровывается как "double-ended queue" (двусвязная очередь) и является одной из наиболее полезных структур данных в программировании.
Основные операции, поддерживаемые в deque, включают:
- PushFront(x): Вставляет элемент x в начало очереди.
- PushBack(x): Вставляет элемент x в конец очереди.
- PopFront(): Удаляет элемент с начала очереди и возвращает его значение.
- PopBack(): Удаляет элемент с конца очереди и возвращает его значение.
- Front(): Возвращает значение элемента в начале очереди без его удаления.
- Back(): Возвращает значение элемента в конце очереди без его удаления.
- Size(): Возвращает текущий размер очереди.
- Empty(): Проверяет, пуста ли очередь.
Для работы с очередью deque в языке C мы можем использовать стандартную библиотеку C, которая предоставляет заголовочный файл
<deque.h>. Ниже приведен пример кода, иллюстрирующий использование deque:#include <stdio.h> #include <deque.h> int main() { deque_t* deque = deque_create(); // создание пустой deque // Вставка элементов в начало очереди deque_push_front(deque, 100); deque_push_front(deque, 200); deque_push_front(deque, 300); // Вставка элементов в конец очереди deque_push_back(deque, 400); deque_push_back(deque, 500); deque_push_back(deque, 600); // Получение и печать значения элемента в начале очереди printf("Front element: %d\n", deque_front(deque)); // Получение и печать значения элемента в конце очереди printf("Back element: %d\n", deque_back(deque)); // Удаление элементов из начала очереди deque_pop_front(deque); deque_pop_front(deque); // Удаление элементов из конца очереди deque_pop_back(deque); deque_pop_back(deque); // Проверка, пуста ли очередь if (deque_empty(deque)) { printf("Deque is empty\n"); } else { printf("Deque is not empty\n"); } // Очистка памяти, выделенной для очереди deque_destroy(deque); return 0; }В данном примере мы создаем deque с помощью функции
deque_create(), вставляем элементы в начало и конец очереди с помощью функцийdeque_push_front()иdeque_push_back()соответственно. Затем мы получаем значения элемента в начале и конце очереди с помощью функцийdeque_front()иdeque_back()и выводим их на экран. После этого мы удаляем несколько элементов из начала и конца очереди с помощью функцийdeque_pop_front()иdeque_pop_back(). Затем мы проверяем, пуста ли очередь с помощью функцииdeque_empty(). Наконец, мы освобождаем память, выделенную для очереди, с помощью функцииdeque_destroy().