-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathqueue.js
More file actions
56 lines (39 loc) · 982 Bytes
/
queue.js
File metadata and controls
56 lines (39 loc) · 982 Bytes
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
goog.provide('soko.Queue');
goog.require('soko.HeapInterface');
goog.scope(function() {
/**
* Implementation of HeapInterface that behaves like a queue.
* Priority is not used (intention is to use same code as for
* bfs).
*
* @implements {soko.HeapInterface}
* @constructor
*/
soko.Queue = function() {
this.data_ = [];
this.map_ = [];
};
var Queue = soko.Queue;
Queue.prototype.empty = function() {
return this.data_.length == 0;
};
Queue.prototype.size = function() {
return this.data_.length;
};
Queue.prototype.push = function(value, score) {
this.map_[value.id] = this.data_.length;
this.data_.push([value, score]);
};
Queue.prototype.pop = function() {
var data = this.data_.shift();
this.map_[data[0].id] = undefined;
return {
'value': data[0],
'score': data[1]
};
};
Queue.prototype.exists = function(value) {
return this.map_[value.id] !== undefined;
};
Queue.prototype.updateIfBetter = function(value, score) {};
});