# 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

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 *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.

- 1
A 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...

- 2
Stacks 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...

- 3
Let'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...

- 1
You 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...

- 2
The stack's [...] and [...] methods are our tools to add and remove items from it. [...] additionally returns the value of the item it is removing. Keep in mind that we can only make modific...

- 3
With 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...

- 4
It'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: [...] This might se...

- 5
Nice work — you've built out a [...] class that can: - add a new item to the top via a [...] method - remove an item from the top and returns its value with a [...] method - return the val...

## 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