1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| var Class = require('./Class');
| var Heap = require('./Heap');
| var isSorted = require('./isSorted');
| var wrap = require('./wrap');
| exports = Class({
| initialize: function PriorityQueue() {
| var cmp =
| arguments.length > 0 && arguments[0] !== undefined
| ? arguments[0]
| : isSorted.defComparator;
| this._heap = new Heap(
| wrap(cmp, function(fn, a, b) {
| return fn(a, b) * -1;
| })
| );
| this.size = 0;
| },
| clear: function() {
| this._heap.clear();
| this.size = 0;
| },
| enqueue: function(item) {
| this._heap.add(item);
| this.size++;
| return this.size;
| },
| dequeue: function() {
| var item = this._heap.poll();
| if (item) {
| this.size--;
| return item;
| }
| },
| peek: function() {
| return this._heap.peek();
| }
| });
|
| module.exports = exports;
|
|