Deques are a generalization of stacks and queues (the name is pronounced "deck" and is short for "double-ended queue"). -- Python
collections.
npm install @blakeembrey/deque --save
- sizeReturns the number of elements in the deque.
- push(x)Add- xto right side of the deque.
- pushLeft(x)Add- xto the left side of the deque.
- clear()Remove all elements from the deque leaving it with length 0.
- extend(iterable)Extend the right side of the deque by appending elements from iterable.
- extendLeft(iterable)Extend the left side of the deque by appending elements from iterable.
- peek(i)Return the element at index- iin the deque.
- indexOf(x, start?)Return the position of- xin the deque.
- has(x)Return a boolean indicating whether- xis in the deque.
- insert(i, x)Insert- xinto the deque at position- i.
- pop()Remove and return an element from the right side of the deque. If no elements are present, throws- RangeError.
- popLeft()Return and return an element from the left side of the deque. If no elements are present, throws- RangeError.
- delete(i)Delete the value at position- i.
- reverse()Reverse the elements of the deque in-place.
- rotate(n=1)Rotate the deque- nsteps to the right.
- entries()Return an iterable of deque.
- @@iterator()Return an iterable of deque.
import { Deque } from '@blakeembrey/deque'
const d = new Deque('ghi')
for (const value of d) {
  console.log(value.toUpperCase()) //=> G H I
}
d.push('j')
d.pushLeft('f')
d //=> Deque(['f', 'g', 'h', 'i', 'j'])
d.pop() //=> 'j'
d.popLeft() //=> 'f'
Array.from(d) //=> ['g', 'h', 'i']
d.peek(0) //=> 'g'
d.peek(-1) //=> 'i'
d.extend('jkl')
d //=> Deque(['g', 'h', 'i', 'j', 'k', 'l'])
d.rotate(1)
d //=> Deque(['l', 'g', 'h', 'i', 'j', 'k'])
d.rotate(-1)
d //=> Deque(['g', 'h', 'i', 'j', 'k', 'l'])
const d2 = new Deque(d)
d2 //=> Deque(['g', 'h', 'i', 'j', 'k', 'l'])This project uses TypeScript and publishes definitions on NPM.
Circular array implementation originally based on denque with additional optimizations.
Apache 2.0