Client Interface
As with stacks, there are many different
interpretations of how these operations
should actually be implemented
should “is empty” be combined with “dequeue”
should “is full” be combined with “enqueue”
should dequeue return and remove the item at the front
of the queue
should dequeue just remove the item at the front of the
queue, requiring that a “peek” also be provided