Рассмотрим следующий код.
Код: Выделить всё
var priortyQueue = new PriorityQueue();
priortyQueue.Enqueue("A",1);
priortyQueue.Enqueue("C-1",3);
priortyQueue.Enqueue("C-2",3);
priortyQueue.Enqueue("D", 4);
while (priortyQueue.TryDequeue(out var str,out var priority))
{
Console.WriteLine($"Element:{str} with Priority {priority}");
}
Код: Выделить всё
Element:A with Priority 1
Element:C-1 with Priority 3
Element:C-2 with Priority 3
Element:D with Priority 4
Теперь, если бы я изменил приведенный выше код и добавил еще один оператор постановки в очередь между вставкой «C1» и «C2», все немного изменилось.
Код: Выделить всё
var priortyQueue = new PriorityQueue();
priortyQueue.Enqueue("A",1);
priortyQueue.Enqueue("C-1",3);
priortyQueue.Enqueue("B", 2); // change here
priortyQueue.Enqueue("C-2",3);
priortyQueue.Enqueue("D", 4);
Код: Выделить всё
Element:A with Priority 1
Element:B with Priority 2
Element:C-2 with Priority 3 // Order is reversed
Element:C-1 with Priority 3
Element:D with Priority 4
- "B" имеет приоритет ниже, чем "C1" и "C2"
- "B" ставится в очередь после "C1" и перед "C2".
Подробнее здесь: https://stackoverflow.com/questions/697 ... ty-is-same
Мобильная версия