@nermin99/priorityqueue
v1.1.0
Published
A simple and lightweight priority queue
Downloads
49
Maintainers
Readme
A very simple and lightweight Javascript Priority Queue, based on this article.
Focused on functionality rather than performance.
Works with both ES Modules and CommonJS.
Installation
npm i @nermin99/priorityqueueImport
import { PriorityQueue } from '@nermin99/priorityqueue'or
const { PriorityQueue } = require('@nermin99/priorityqueue')Basic Usage
const pq = new PriorityQueue()
pq.enqueue(1, 30)
pq.enqueue(2, 10)
pq.enqueue('x,y', 20)
pq.dequeue() // { key: 2, priority: 10 }
pq.front() // { key: 'x,y', priority: 20 }
pq.rear() // { key: 1, priority: 30 }API Reference
- .enqueue(key, priority)
- .dequeue()
- .updatePriority(key, newPriority)
- .front()
- .rear()
- .isEmpty()
- .entries()
- .keys()
- .priorities()
.enqueue(key, priority)
Adds an element with a given key and priority to the queue.
Keys can be of any type and are compared by identity (like Map keys), so two distinct objects with the same shape count as different keys.
pq.enqueue(1, 20)
pq.enqueue('x,y', 10)
pq // [{key: 'x,y', priority: 10}, {key: 1, priority: 20}].dequeue()
Removes the highest priority element from the queue and returns it.
pq.enqueue(1, 20)
pq.enqueue('x,y', 10)
const element = pq.dequeue()
element // {key: 'x,y', priority: 10}.updatePriority(key, newPriority)
Updates the priority of an existing element in the queue.
pq.enqueue(1, 20)
pq.enqueue('x,y', 10)
pq.updatePriority(1, 5)
pq // [{key: 1, priority: 5}, {key: 'x,y', priority: 10}].front()
Returns the highest priority element in the queue without removing it.
pq.enqueue(1, 20)
pq.enqueue('x,y', 10)
pq.front() // {key: 'x,y', priority: 10}
pq // [{key: 'x,y', priority: 10}, {key: 1, priority: 20}].rear()
Returns the lowest priority element in the queue without removing it.
pq.enqueue(1, 20)
pq.enqueue('x,y', 10)
pq.rear() // {key: 1, priority: 20}
pq // [{key: 'x,y', priority: 10}, {key: 1, priority: 20}].isEmpty()
Returns true if the queue is empty.
pq.enqueue(1, 20)
pq.dequeue()
pq.isEmpty() // true.entries()
Returns an array of the queue key/priority-pairs ordered by priority.
pq.enqueue(1, 20)
pq.enqueue('x,y', 10)
pq.entries() // [{key: 'x,y', priority: 10}, {key: 1, priority: 20}].keys()
Returns an array of the queue keys ordered by priority.
pq.enqueue(1, 20)
pq.enqueue('x,y', 10)
pq.keys() // ['x,y', 1].priorities()
Returns an array of the queue priorities ordered by priority.
pq.enqueue(1, 20)
pq.enqueue('x,y', 10)
pq.priorities() // [10, 20]