Я работал над проектом, использующим узлы, и для этого проекта мы должны упорядочить узлы в соответствии с приоритетом (0 - 2, где 0 - самый высокий, а 2 - самый низкий), который содержится в элементе узлов ( в порядке убывания). Теперь у меня это работает частично, так как когда он действительно выполняет обмен, он превращает оба элемента в один и тот же (я только пытаюсь обменять элементы). Например: я бы ввел Node_1, который содержит prio 0, затем Node_2, который содержит prio 1, тогда он должен быть упорядочен как:
Node_2(holds prio 1) --> Node_1(holds prio 0)
, тогда он должен запустить метод для упорядочить их как (с уменьшением приоритета):
Node_1(holds prio 0) --> Node_2(holds prio 1)
, но вместо этого он просто превращает оба узла в один и тот же (один и тот же приоритет):
Node_1(holds prio 0) --> Node_1(holds prio 0)
, независимо от того, как много узлов я добавляю к нему. Все они превращаются в один и тот же узел с наивысшим приоритетом. Любая помощь будет отличной.
Код:
private void sortJobs() {
Node p, q, r;
p = jobs;
q = null;
r = null;
//only runs if there is more than 1 job
while (p != null && p.next != null) {
q = p;
p = p.next;
if (q.item.getPriority() > p.item.getPriority()) {
r = q;
q.item = p.item;
p.item = r.item;
}
}
}
Пожалуйста, дайте мне знать, если есть лучший способ сделать это, поскольку я все еще учусь.