@blakeembrey/deque
Deques are a generalization of stacks and queues
Last updated 7 years ago by blakeembrey .
Apache-2.0 · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install @blakeembrey/deque 
SYNC missed versions from official npm registry.

Deque

NPM version NPM downloads Build status Test coverage

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) Add x to right side of the deque.
  • pushLeft(x) Add x 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 index i in the deque.
  • indexOf(x, start?) Return the position of x in the deque.
  • has(x) Return a boolean indicating whether x is in the deque.
  • insert(i, x) Insert x into 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 n 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

Current Tags

  • 1.0.5                                ...           latest (7 years ago)

6 Versions

  • 1.0.5                                ...           7 years ago
  • 1.0.4                                ...           7 years ago
  • 1.0.3                                ...           8 years ago
  • 1.0.2                                ...           8 years ago
  • 1.0.1                                ...           8 years ago
  • 1.0.0                                ...           8 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 0
Dependencies (0)
None
Dev Dependencies (17)
Dependents (1)

Copyright 2013 - present © cnpmjs.org | Home |