priorityqueuejs
Version:
a simple priority queue data structure
88 lines (55 loc) • 1.9 kB
Markdown
# priorityqueue.js
[](
https://travis-ci.com/janogonzalez/priorityqueuejs)
A simple priority queue data structure for Node.js.
## Installation
```
$ npm install priorityqueuejs
```
## Example
```js
var PriorityQueue = require('priorityqueuejs');
var queue = new PriorityQueue(function(a, b) {
return a.cash - b.cash;
});
queue.enq({ cash: 250, name: 'Valentina' });
queue.enq({ cash: 300, name: 'Jano' });
queue.enq({ cash: 150, name: 'Fran' });
queue.size(); // 3
queue.peek(); // { cash: 300, name: 'Jano' }
queue.deq(); // { cash: 300, name: 'Jano' }
queue.size(); // 2
```
## API
### `PriorityQueue()`
Initializes a new empty `PriorityQueue` wich uses `.DEFAULT_COMPARATOR()` as
the comparator function for its elements.
### `PriorityQueue(comparator)`
Initializes a new empty `PriorityQueue` with uses the given `comparator(a, b)`
function as the comparator for its elements.
The comparator function must return a positive number when `a > b`, 0 when
`a == b` and a negative number when `a < b`.
### `PriorityQueue.DEFAULT_COMPARATOR(a, b)`
Compares two `Number` or `String` objects.
### `PriorityQueue#deq()`
Dequeues the top element of the priority queue.
Throws an `Error` when the queue is empty.
### `PriorityQueue#enq(element)`
Enqueues the `element` at the priority queue and returns its new size.
### `PriorityQueue#forEach(fn)`
Executes `fn` on each element. Just be careful to not modify the priorities,
since the queue won't reorder itself.
### `PriorityQueue#isEmpty()`
Returns whether the priority queue is empty or not.
### `PriorityQueue#peek()`
Peeks at the top element of the priority queue.
Throws an `Error` when the queue is empty.
### `PriorityQueue#size()`
Returns the size of the priority queue.
## Testing
```
$ npm install
$ npm test
```
## Licence
MIT