Documentation

An unbounded priority queue based on a priority heap. The implementation is based on a pblHeap.
This queue orders elements according to an integer priority specified with each element.
A priority queue does permit null elements.

The head of this queue is the element with the highest priority value. If multiple elements are tied for highest priority,
the head is one of those elements -- ties are broken arbitrarily.
The queue retrieval operations pblPriorityQueueGet and pblPriorityQueueRemoveFirst access the element at the head of the queue.

A priority queue is unbounded, but has an internal capacity governing the size of an array used to store the elements on the queue.
It is always at least as large as the queue size.
As elements are added to a priority queue, its capacity grows automatically.
The details of the growth policy are not specified.

The Iterator provided in method pblPriorityQueueIterator() is not guaranteed to traverse the elements of the PriorityQueue in any particular order.

Implementation note: this implementation provides O(log(n)) time for the insertion methods;
O(log(n)) time for the removal methods; and constant time for the retrieval methods.

See also the source file pblPriorityQueueTest.c for an example on how to use the Priority Queue implementation.