Deques
A deque (double-ended queue) combines properties of both queues and stacks. Elements can be inserted and deleted at either end.
INTERACTIVE LAB
Six deque operations
ACCESSPRO
PRO EXCLUSIVEGo further with Pro
Unlock Pro accessUnlock the complete interactive lab, deeper explanations, and curated reference answers.
C++ uses std::deque, Java uses the Deque interface with ArrayDeque, and Python uses collections.deque. The examples insert at both ends, read both end elements, and remove from both ends. Reading does not modify the deque.
C
deque_t *deque_push_front(deque_t *deque, T elem) {
if (deque == NULL) {
return NULL;
}
doubly_linked_list_insert(deque->data, 0, elem);
return deque;
}
deque_t *deque_push_back(deque_t *deque, T elem) {
if (deque == NULL) {
return NULL;
}
doubly_linked_list_add(deque->data, elem);
return deque;
}
T deque_pop_front(deque_t *deque) {
return doubly_linked_list_remove(deque->data, 0);
}
T deque_pop_back(deque_t *deque) {
return doubly_linked_list_remove(deque->data, deque_size(deque) - 1);
}