Don't like this style? Click here to change it! blue.css
So we're almost done learning every ADT and implementing them in many interesting ways. Today I wanted to give
you a chance to go deeper with heaps and have you implement a double-ended priority queue. Wikipedia's version here. The upshot is you
should be able to do pop_min()
or pop_max()
quickly.
Build a Double-Ended Priority Queue with insert
, min
, max
,
pop_min
, and pop_max
.
Build it by having two heaps (one min-heap and one max-heap), but the array should be an array of
Node
s. Where each Node
stores data and the index of the partner value in the other heap.
I would write your own "swap" that updates the correct nodes.
Here is a main()
for you to begin from and make work:
Good luck!