## General Introductions

- Aakash Varshney. Introduction to Data Structures. the startup, 2018.
- Robert Horvick. Data Structures Succinctly Part 1. syncfusion, 2014.
- Covers algorithms and data structures overview, linked lists, array lists, stacks, queues, binary search tree, set, and sorting algorithms.

- Robert Horvick. Data Structures Succinctly Part 2. syncfusion, 2014.
- Covers skip lists, hash tables, heap and priority queues, and AVL trees.

- “It’s turtles all the way down.” – A Guide to the Basics of Data Structures. algosaurus, 2015.
- OpenDSA.
- Open Data Structures (ebook) – Available in pseudocode, java, and c++ editions.
- JavaScript:
- Itsy Bitsy Data Structures.
- Thon Ly. Algorithms in JavaScript: 40 Problems, Solutions, and Explanations. medium, 12/2017.

- Python:
- Brad Miller, David Ranum. Problem Solving with Algorithms and Data Structures Using Python. runestone.academy.
- Dan Bader. Common Python Data Structures (Guide). realpython, 8/2020.*

## The Types of Data Structures

### Arrays

- Estefania Cassingena Navone. Data Structures 101: Arrays – A Visual Introduction for Beginners. freecodecamp, 2019.

### Dictionaries (sometimes called Associative Array or Hash Table)

- Often when someone refers to a “hash” they are speaking of a “hash table” a specific implementation of the abstract data type dictionary (StackOverflow).
- Estefania Cassingena Navone. Python Dictionaries 101: A Detailed Visual Introduction. freecodecamp, 2019.

### Graphs

“Graphs are used to represent, find, analyze, and optimize connections between elements (houses, airports, locations, users, articles, etc.).”

Estefania Cassingena Navone

- Estefania Cassingena Navone. Data Structures 101: Graphs — A Visual Introduction for Beginners. freecodecamp, 2019.*
- Vaidehi Joshi. A Gentle Introduction to Graph Theory. basecs, 2017.*
- Vardan Grigoryan. How to Think in Graphs: An Illustrative Introduction to Graph Theory and Its Applications. freecodecamp, 2018.
- Basic Components: Nodes, Edges
- |V| = Number of vertices (nodes) in a graph.
- |E| = Number of edges (connections) in a graph.
- Graphs are classified by edge characteristics.
- Directional
- Directed Graphs
- Undirected Graphs

- Weighting
- Weighted Graphs
- Unweighted Graphs

- Multigraphs
- Density
- Dense Graphs
- Sparse Graphs

- Directional
- Traversal
- Depth First Traversal
- Breadth First Traversal

- Cycles

### Heaps

- Vaidehi Joshi. Learning to Love Heaps. basecs, 7/2017.*
- Mariam Jaludi. Data Structures: Heaps. medium, 9/2019.
- min-heap- the smallest value is at the root, all children must be more than/equal to their parent.
- max-heap – the greatest value is at the root, all children must be less than/equal to their parent.
**C#:**- Richard Carr. Binary Heaps. BlackWasp, 2013.
- Starts with a fairly extensive, language-agnostic introduction.

- Richard Carr. Binary Heaps. BlackWasp, 2013.
**Python:**- Min Heap in Python. GeeksforGeeks, 2/2020.
- Moshe Zadka. The Python heapq Module: Using Heaps and Priority Queues. realpython, 6/2020.

### Linked Lists

- Vaidehi Joshi. What’s a Linked List, Anyway? [Part 1], [Part 2]. basecs, 2017.
- Each item in a linked list has a reference to the item following it.
- Doubly Linked
- If a linked list is doubly linked, it has a reference to both the previous and next records.

- Circularly Linked
**JavaScript:**- Kevin Turney. Data Structures 101: Linked Lists. freecodecamp, 2018.

**Python:**- Pedro Pregueiro. Linked Lists in Python: An Introduction. realpython, 2020.

### Queues

- First-In First-Out (FIFO).
- Similar to Stacks, but instead of LIFO (Last-In First-Out) it uses FIFO (First-In First-Out).
**JavaScript**- Kevin Turney. Data Structures 101: Queues. freecodecamp, 2018.

### Sets

- Estefania Cassingena Navone. Python Sets: A Detailed Visual Introduction. freecodecamp, 2020.

### Stacks

- Last-In First-Out (LIFO), rarely called First-In Last-Out (FILO).
- Uses
`push`

to add to top of stack,`pull`

or`pop`

to remove from top of stack. Not possible to interact with any other item besides top item.- Sometimes supports
`peek`

which allows looking at top of stack but without removing it from the stack. - Think of a stacked pile of physical items, it is easiest to add to the top of the stack and to remove from the top of the stack, getting to other items in the stack is difficult/impossible.

- Sometimes supports
- Wahid Tanner. Episode 206: Collections: Stack. takeupcode, 2017.
**Python:**- Does not include stack as a data structure but
`lists`

(bad idea) and`collections.deque`

(“deck”) can be used as stacks.- In Python you will use
`append()`

instead of`push()`

.

- In Python you will use
- Jim Anderson. How to Implement a Python Stack. realpython, 2019.*
- Stack in Python. GeeksforGeeks, 2020.

- Does not include stack as a data structure but
**JavaScript:**- Kevin Turney. Data Structures 101: Stacks. freecodecamp, 2018.

**C/C++**- Anand Jaisingh. Basics of Stacks. hackerearth, 2020.

### Trees

- Wahid Tanner, Trees Can, takeupcode, 2017.
- Wahid Tanner, Trees Use, takeupcode, 2017.
- Traversal
- Binary Search Tree
- Kevin Turney. Data Structures 101: Binary Search Tree. freecodecamp, 2018.

- AVL Tree
- Spanning Tree
- Splay Tree

## Big O Notation

- Richard Carr. Big O Notation Basics. BlackWasp, 2013.