package org.insa.algo.utils; /** * Interface representing a basic priority queue. * * Implementation should enforce the required complexity of each method. * */ public interface PriorityQueue> { /** * Check if the priority queue is empty. * *

* Complexity: O(1) *

* * @return true if the queue is empty, false otherwise. */ public boolean isEmpty(); /** * Get the number of elements in this queue. * *

* Complexity: O(1) *

* * @return Current size (number of elements) of this queue. */ public int size(); /** * Insert the given element into the queue. * *

* Complexity: O(log n) *

* * @param x Item to insert. */ public void insert(E x); /** * Remove the given element from the priority queue. * *

* Complexity: O(log n) *

* * @param x Item to remove. */ public void remove(E x) throws ElementNotFoundException; /** * Retrieve (but not remove) the smallest item in the queue. * *

* Complexity: O(1) *

* * @return The smallest item in the queue. * * @throws EmptyPriorityQueueException if this queue is empty. */ public E findMin() throws EmptyPriorityQueueException; /** * Remove and return the smallest item from the priority queue. * *

* Complexity: O(log n) *

* * @return The smallest item in the queue. * * @throws EmptyPriorityQueueException if this queue is empty. */ public E deleteMin() throws EmptyPriorityQueueException; }