Stacks and Queues are basically linked lists with abstractions built in that let you retrieve data in a particular way. A stack, for instance, lets you "stack" data on to it but will only let you pull data off of the top - just like a stack of plates. The methods that you associate with a stack are push and pop: you "push" something onto the stack and "pop" off the top of the stack. This is also known as "Last In, First Out" or LIFO.


A queue has the same kind of data access rule, but instead of popping off the top you can only pull from the bottom of the queue, also known as "dequeuing". The two methods associated with a queue are enqueue and dequeue - just like waiting in line (or a queue) for a movie.

Hash Tables

If you've worked with JavaScript objects in the past, you've worked with hash tables. They have a specific data access pattern: you access each value with a particular key. These objects are associated with a particular time complexity - do you know what that would be?