1. A large number of deletions in a separate chaining hash table can cause the table to be fairly empty, which wastes space. In this case, we can rehash to a table half as large. Assume that we rehash to a larger table when there are twice as many elements as the table size. How empty should the table be before we rehash to a smaller table?
2. Reimplement separate chaining hash tables using a vector of singly linked lists instead of vectors.
3. The isEmpty routine for quadratic probing has not been written. Can you implement it by returning the expression currentSize==0?