0

次のような 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

キューが予期した順序 (最小から最大) で値を返さないのはなぜですか。

ありがとう!

4

1 に答える 1

0

私のコードの一部で、リストの長さではなくリストを渡していたため、すべてが台無しになっていることがわかりました。このエラーを修正したところ、プライオリティ キューが期待どおりに機能しました。

于 2012-11-07T02:52:45.397 に答える