次のような enqueue メソッドを使用して、一意の優先度キューを作成しました。
huzz.ak.UniquePriorityQueue.prototype.enqueue =
function(priority, value) {
var node = {'valid': true, 'value': value, 'priority': priority};
var key = value.key;
if (this.pointers_[key] !== undefined) {
this.pointers_[key].valid = false;
}
this.pointers_[key] = node;
this.priorityQueue_.enqueue(priority, node);
};
値を出力すると、ランダムな順序で出力されます。
while (true) {
p = this.priorityQueue_.dequeue();
this.logger_.log(p.priority + ' ' + p.value.toString() + ' ' + p.valid);
}
1265 ... true
1413 S..N. false
1265 ... false
92 S..N. true
1734 .........E false
59 ... false
75 ...B false
92 S..N. false
キューが予期した順序 (最小から最大) で値を返さないのはなぜですか。
ありがとう!