# Learn Stacks

Learn about the first-in-last-out data structure called a "stack". Study it conceptually and use it in practice. Apply what you've learned to the famous Towers of Hanoi problem!

Start## Key Concepts

Review core concepts you need to learn to master this subject

Stack *overflow*

Stack *overflow*

Every stack has a size that determines how many nodes it can accommodate. Attempting to push a node in a full stack will result in a stack overflow. The program may crash due to a stack overflow.

A stack is illustrated in the given image. `stackA.push(xg)`

will result in a stack overflow since the stack is already full.

The *stack* data structure

The *stack* data structure

A *stack* is a data structure that follows a last in, first out (LIFO) protocol. The latest node added to a stack is the node which is eligible to be removed first. If three nodes (`a`

, `b`

and, `c`

) are added to a stack in this exact same order, the node `c`

must be removed first. The only way to remove or return the value of the node `a`

is by removing the nodes `c`

and `b`

.

Main methods of a *stack* data structure

Main methods of a *stack* data structure

The stack data structure has three main methods: `push()`

, `pop()`

and `peek()`

.
The `push()`

method adds a node to the top of the stack.
The `pop()`

method removes a node from the top of the stack.
The `peek()`

method returns the value of the top node without removing it from the stack.

Stack data structure

Stack data structure

A `Stack`

is a data structure that supports two basic operations: pushing a new item to the top of the stack and popping a single item from the top of the stack.

In order to implement a stack using a node class, we have to store a node that is currently referencing the top of the stack and update it during the push and pop operations.

- 1A stack is a data structure which contains an ordered set of data. Stacks provide three methods for interaction: - Push - adds data to the “top” of the stack - Pop - returns and removes data from…
- 2Stacks can be implemented using a linked list as the underlying data structure because it’s more efficient than a list or array. Depending on the implementation, the top of the stack is equivalen…
- 3Let’s take a minute to review what we’ve covered about stacks in this lesson. Stacks: - Contain data nodes - Support three main operations - Push adds data to the top of the stack - Pop remov…

- 1You have an understanding of how stacks work in theory, so now let’s see how they can be useful out in the wild — with Python! Remember that there are three main methods that we want our stacks t…
- 2The stack’s push() and pop() methods are our tools to add and remove items from it. pop() additionally returns the value of the item it is removing. Keep in mind that we can only make modification…
- 3With stacks, size matters. If we’re not careful, we can accidentally over-fill them with data. Since we don’t want any stack overflow, we need to go back and make a few modifications to our methods…
- 4It’s time to add a couple helper methods. Helper methods simplify the code we’ve written by abstracting and labeling chunks of code into a new function. Here’s an example: # Adding “!” without …
- 5Nice work — you’ve built out a Stack class that can: - add a new item to the top via a push() method - remove an item from the top and returns its value with a pop() method - return the value of…

## What you'll create

Portfolio projects that showcase your new skills

## How you'll master it

Stress-test your knowledge with quizzes that help commit syntax to memory