We augmented the standard binary heap data structure.
Priority is stored as an unsigned long long in accordance with the projlib.a library functions.
Our heap data structure is then an array of Nodes, where the parent node has a larger key than either of its children. This is essentially our job table. We use this fact to ensure that another instance of a job is not executed, only existing jobs in the queue will be NICE'd and only existing jobs will be KILL'd. We can preallocate memory to the heap data structure and to our auxiliary integer array, avoiding unnecessary compares for memory allocation. We store the size of the heap to ensure our operations act on nodes inside the heap.