双端队列
双端队列(Deque, Double Ended Queue)是一种同时具有队列和栈的性质的数据结构,双端队列可以从其两端插入和删除元素。
互动实验
双端队列的六种操作
访问权限PRO
PRO EXCLUSIVE探索不止于此
尊享 Pro 权益解锁完整互动实验、进阶解析与精选参考答案。
C++ 使用标准库 std::deque,Java 使用 Deque 接口和 ArrayDeque,Python 使用 collections.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);
}