array queue has limited size, or requires reallocating arrays
(and copying the data correctly)
linked queue has flexible size, proportional to the number of
items in the queue
both are O(1) for each operation, or amortized O(1)
for offer on the resizable array queue
the O() runtime may not give us all the information we would like --
actual testing can be followed by profiling, where we find out where
in our program we are spending time