Stacks and Queues are two types of restricted-access data types.
As we will see, they can be built on top of another structure, such as an array or a linked list,
but they won't expose all the functionality of their underlying structure.
Stacks only allow Push, Pop, and Get from the "top" of the stack, and
Queues only allow Push from the back, and Pop and Get from the front.
These data structures exist to help implement specific purposes - such as a queue to
keep track of data received, line them up, and process the items in the list, moving
from front to back.