Now Boarding

A "priority queue" is a queue wherein each element has a "priority" associated with it. Elements with higher priority are dequeued before elements with lower priority. Airlines tend to use priority queues when boarding planes; passengers in "group 1" might be asked to board before passengers in "group 2" and so forth.

Answer the below in `pqueue.md`.

Questions

1. (2 points.) Suppose that a `passenger` is defined per the below, wherein `group` represents a passenger’s priority.

``````typedef struct
{
unsigned int group;
}
passenger;``````

Complete the definition of `pqueue` below in such a way that it represents a priority queue for passengers.

``````typedef struct
{
// TODO
}
pqueue;``````
2. (3 points.) In several lines of pseudocode, describe an algorithm via which to enqueue a `passenger` into your `pqueue`.

3. (2 points.) What’s the upper bound on that algorithm’s running time? Why?

4. (3 points.) In several lines of pseudocode, describe an algorithm via which to dequeue a `passenger` from your `pqueue`. If multiple `passenger`s happen to have the same priority, any of them may be dequeued first.

5. (2 points.) What’s the upper bound on that algorithm’s running time? Why?

Debrief

1. Which resources, if any, did you find helpful in answering this problem’s questions?

2. About how long did you spend on this problem’s questions?