'a'
mh-two-thousand-and-two
2024-04-12 44d2c92345cd156a59fc327b3060292a282d2893
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;