This commit is contained in:
39
node_modules/licia/PriorityQueue.js
generated
vendored
Normal file
39
node_modules/licia/PriorityQueue.js
generated
vendored
Normal file
@@ -0,0 +1,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;
|
||||
Reference in New Issue
Block a user