A deque implemented as an array blocked doubly linked list.
deno add jsr:@alg/deque
import {deque} from "@alg/queues";
const q = deque(["I", "J"]); // or new Deque();
q.pushFront("L");
q.pushBack("R");
q.pushAllBack(["X", "Y", "Z"]);
q.pushAllFront(["A", "B", "C"]);
console.log(q.size()); // 10
console.log(q.popBack()); // "Z"
console.log(q.popFront()); // "C"
console.log(q.peekBack()); // "Y"
console.log(q.peekFront()); // "B"
q.pushBack(q.popFront()); // Look, ma! O(1) rotate!
console.log([...q]); // ["A", "L", "I", "J", "R", "X", "Y", "B"]