Dynamic Data Structures
Pointers let us to define data structures whose size is set at run time rather than at compile time.
We will reimplement the bag using dynamic arrays. This allows us to adapt the capacity of the array that contains bag elements as the bag is used.