Deque
Deques are a generalization of stacks and queues (the name is pronounced "deck" and is short for "double-ended queue"). -- Python
collections
.
Installation
npm install @blakeembrey/deque --save
Usage
-
size
Returns the number of elements in the deque. -
push(x)
Addx
to right side of the deque. -
pushLeft(x)
Addx
to 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 indexi
in the deque. -
indexOf(x, start?)
Return the position ofx
in the deque. -
has(x)
Return a boolean indicating whetherx
is in the deque. -
insert(i, x)
Insertx
into the deque at positioni
. -
pop()
Remove and return an element from the right side of the deque. If no elements are present, throwsRangeError
. -
popLeft()
Return and return an element from the left side of the deque. If no elements are present, throwsRangeError
. -
delete(i)
Delete the value at positioni
. -
reverse()
Reverse the elements of the deque in-place. -
rotate(n=1)
Rotate the dequen
steps 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'])
TypeScript
This project uses TypeScript and publishes definitions on NPM.
Reference
Circular array implementation originally based on denque
with additional optimizations.
License
Apache 2.0