## Before Research
A *Queue* is a 1-dimensional linear, dynamically-sized data structure that follows first-in, first-out principles. Supported operations are generally called:
- *push*: appends an item to the end of the queue
- *pop*: removes the first item in the queue
- *size*: number of items in the queue
Queues can be described using an [[Array]] as its underlying data container.
- *pop*: checks to see if an item at index 0 exists; if it exists, temporarily store the value at index 0 in a variable and shift all remaining items in the array to the left by 1 and return the temporarily stored value it, otherwise returns null
- *push*: internally should maintain the pointer to the "tail" of the queue, aka the index of the last item of the queue; if pointer is the same as the size of the queue, then resize the array; increment the pointer and store the item at that index.
## After Research