Data Structures Essentials
Roman Lysecky | Frank Vahid
zyBooks 2017

1. Searching and Sorting Alg.
1.1 Searching and algorithms
1.2 Binary search
1.3 O notation
1.4 Algorithm analysis
1.5 Sorting: Introduction
1.6 Selection sort
1.7 Insertion sort
1.8 Quicksort
1.9 Merge sort

2. Lists, Stacks, and Queues
2.1 List abstract data type (ADT)
2.3 Singly-linked lists: Insert
2.4 Singly-linked lists: Remove
2.6 Doubly-linked lists: Insert
2.7 Doubly-linked lists: Remove
2.8 Linked list traversal
2.9 Linked list search
2.10 List header nodes
2.11 Circular lists
2.12Stack abstract data type (ADT)
2.13 Stacks using linked lists
2.14 Queue abstract data type (ADT)
2.15 Queues using linked lists

3. Hash Tables
3.1 Hash tables
3.2 Chaining
3.3 Linear probing
3.5 Double hashing
3.6 Common hash functions
3.7 Direct hashing

4. Trees
4.1 Binary trees
4.2 Binary search trees
4.3 BST search algorithm
4.4 BST insert algorithm
4.5 BST remove algorithm
4.6 BST inorder traversal
4.7 BST height and insertion order
4.8 BST parent node pointers
4.9 Heaps
4.10 Heaps using arrays
4.11 Heap sort
4.12 Treaps

5. Balanced Trees
5.1 AVL: A balanced tree
5.2 AVL rotations
5.3 AVL insertions
5.4 AVL removals
5.5 Red-black tree: A balanced tree
5.6 Red-black tree: Rotations
5.7 Red-black tree: Insertion
5.8 Red-black tree: Removal

6. Graphs
6.1 Graphs: Introduction
6.2 Graph representations: Adjacency lists
6.3 Graph representations: Adjacency matrices
6.4 Graphs: Breadth-first search
6.5 Graphs: Depth-first search
6.6 Directed graphs
6.7 Weighted graphs
6.8 Algorithm: Dijkstra’s shortest path
6.9 Algorithm: Bellman-Ford’s shortest path
6.10 Topological sort
6.11 Minimum spanning tree
6.12 All pairs shortest path

7. B-trees
7.1 B-trees
7.2 2-3-4 tree search algorithm
7.3 2-3-4 tree insert algorithm
7.4 2-3-4 tree rotations and fusion
7.5 2-3-4 tree removal