This is the final version. Justin Reed

You should not be making a new array in add() or remove(), only in grow(). As a result your running times for add() and remove() will be linear instead of constant, and you will also not be using your array in a circular fashion.