Consider the following use cases, and decide which of the data structures we have seen so far
would be most appropriate. Explain, in each part, why your choice is the best we have available so far.
(a) We have many entries that must be added to the structure, and do not know any upper limit on
the number of entries. We must also be able to remove arbitrary entries, given a key. Given a range of keys, we want to quickly access all entries with keys in that range. For example, we might want the entries corresponding to the highest 100 keys, in that order.
(b) We have many entries that must be added to the structure, but we know that there will only ever be at most a certain number of entries. We also wish to quickly delete or access entries, given their keys.
(c) We have many entries that must be added to the structure, but we know that there will only ever be at most a certain number of entries. We will only ever read or delete the entry with the lowest key.