Note the unusual due date.
For this assignment, you will:
In this assignment, you will create a priority queue. You should construct a correct, robust, and elegant data structure. You may want to write a small program to test it, but the product will be just the header file and the implementation file for pqueue
named, naturally enough, pqueue.h
and pqueue.c
. This will also give you some practice in reading and using documentation.
We want to build a priority queue that stores pairs of integers. Each pair consists of a key and a priority. The priority queue will allow the user to insert pairs, to remove the pair with the lowest priority. A struct
has already been defined for you to store the pair of integers in the priority queue. Also, you must check all preconditions and handle them as specified in the documentation provided in pqueue.h
.
The pqueue.h
header file You will code your pqueue
based on an implementation that uses a heap-ordered array like that in the class VectorHeap
from Bailey’s structure
library (see the source code on the handouts page). In your implemen- tation, all of the functions must work correctly in logarithmic time. In other words, doing a linear search for a key across an array is not permitted.
It is typical to create an identically named .c
file (in this case, pqueue.c
) that contains the implementation for each of the functions prototypes declared in the header file (in this case, pqueue.h
). The functions declared in the header file are as follows:
pqueue init(pqueue *self)
pqueue* pqueue push(pqueue *self, int key, int priority)
pqueue* pqueue pop(pqueue *self)
pqueue* pqueue top(pqueue *self, int *key, int *priority)
unsigned int pqueue size(pqueue *self)
bool pqueue empty(pqueue *self)
Full descriptions of these methods can be found in pqueue.h,
and you will need to implement them to the specifications given. You should compare the design of this priority queue with the design of the stack example from class.
pqueue.c
in the src
directory. This is where you will implement all of the functions. You may (and should) add additional helper functions to pqueue.c
.Criterion | Points |
Functionality of priority queue | 10 |
Properly checking preconditions | 4 |
Appropriate comments | 2 |
Style and formatting | 2 |
General correctness | 2 |
Submitted correctly | 1 |
Use the makefile
to create a submission directory on your desktop by running:
make package
Then submit that directory by running:
/common/cs/cs062/bin/submit cs062 asg10 ~/Desktop/PackageName
This will be the approach we will take for all of our C submissions.
test.c/h
files to hold tests).fprintf
to help you debug (but remove these when you submit your final version).