private void add(PQueueEntry a) { if (head != null) { a.setNext(head); head.setPrev(a); } head = a; size++; }
public GameObject removeMin() { PQueueEntry a = head; PQueueEntry minEntry = new PQueueEntry(null , int.MaxValue); while (a != null) { if(a.getPriority() <= minEntry.getPriority()) { minEntry = a; } a = a.getNext(); } delete(minEntry); return minEntry.getGameObject(); }
private void delete(PQueueEntry a) { if (a.getPrev() == null && a.getNext() == null) { head = null; } else { if (a.getPrev() == null) { a.getNext().setPrev(null); head = a.getNext(); } else { a.getPrev().setNext(a.getNext()); } if (a.getNext() == null) { a.getPrev().setNext(null); } else { a.getNext().setPrev(a.getPrev()); } } size--; }
public PriorityQueue() { head = null; size = 0; }
public int minPriority() { PQueueEntry a = head; PQueueEntry minEntry = new PQueueEntry(null, int.MaxValue); while (a != null) { if (a.getPriority() < minEntry.getPriority()) { minEntry = a; } a = a.getNext(); } return minEntry.getPriority(); }
public void setPrev(PQueueEntry newPrev) { prev = newPrev; }
public void setNext(PQueueEntry newNext) { next = newNext; }
public PQueueEntry(GameObject gameObj, int priority) { this.gameObj = gameObj; this.priority = priority; this.next = null; this.prev = null; }