Table of Contents
1. Introduction to Data Structures and Algorithms
1.1 Data Structures
1.2 Introduction to algorithms
1.3 Relation between data structures and algorithms
1.4 Abstract data types
1.5 Applications of ADTs
1.6 Algorithm efficiency
2. Searching and Algorithms Analysis
2.1 Searching and algorithms
2.2 Binary search
2.3 Constant time operations
2.4 Growth of functions and complexity
2.5 O notation
2.6 Algorithm analysis
2.7 Recursive definitions
2.8 Recursive algorithms
2.9 Analyzing the time complexity of recursive algorithms
3. Sorting Algorithms
3.1 Sorting: Introduction
3.2 Selection sort
3.3 Insertion sort
3.4 Shell sort
3.5 Quicksort
3.6 Merge sort
3.7 Radix sort
3.8 Overview of fast sorting algorithms
4. Lists
4.1 List abstract data type (ADT)
4.2 Singly-linked lists
4.3 Singly-linked lists: Insert
4.4 Singly-linked lists: Remove
4.5 Linked list search
4.6 Doubly-linked lists
4.7 Doubly-linked lists: Insert
4.8 Doubly-linked lists: Remove
4.9 Linked list traversal
4.10 Sorting linked lists
4.11 Linked list dummy nodes
4.12 Linked lists: Recursion
4.13 Array-based lists
5. Stacks and Queues
5.1 Stack abstract data type (ADT)
5.2 Stacks using linked lists
5.3 Array-based stacks
5.4 Queue abstract data type (ADT)
5.5 Queues using linked lists
5.6 Array-based queues
5.7 Deque abstract data type (ADT)
6. Hash Tables
6.1 Hash tables
6.2 Chaining
6.3 Linear probing
6.4 Quadratic probing
6.5 Double hashing
6.6 Hash table resizing
6.7 Common hash functions
6.8 Direct hashing
6.9 Hashing Algorithms: Cryptography, Password Hashing
7. Trees
7.1 Binary trees
7.2 Applications of trees
7.3 Binary search trees
7.4 BST search algorithm
7.5 BST insert algorithm
7.6 BST remove algorithm
7.7 BST inorder traversal
7.8 BST height and insertion order
7.9 BST parent node pointers
7.10 BST: Recursion
7.11 Tries
8. Balanced Trees
8.1 AVL: A balanced tree
8.2 AVL rotations
8.3 AVL insertions
8.4 AVL removals
8.5 Red-black tree: A balanced tree
8.6 Red-black tree: Rotations
8.7 Red-black tree: Insertion
8.8 Red-black tree: Removal
9. Heaps and Treaps
9.1 Heaps
9.2 Heaps using arrays
9.3 Heapsort
9.4 Priority queue abstract data type (ADT)
9.5 Treaps
10. Sets
10.1 Set abstract data type
10.2 Set operations
10.3 Static and dynamic set operations
11. Graphs
11.1 Graphs: Introduction
11.2 Applications of graphs
11.3 Graph representations: Adjacency lists
11.4 Graph representations: Adjacency matrices
11.5 Graphs: Breadth-first search
11.6 Graphs: Depth-first search
11.7 Directed graphs
11.8 Weighted graphs
11.9 Algorithm: Dijkstra’s shortest path
11.10 Algorithm: Bellman-Ford’s shortest path
11.11 Topological sort
11.12 Minimum spanning tree
11.13 All pairs shortest path
12. Algorithms
12.1 Huffman compression
12.2 Heuristics
12.3 Greedy algorithms
12.4 Dynamic programming
13. B-trees
13.1 B-trees
13.2 2-3-4 tree search algorithm
13.3 2-3-4 tree insert algorithm
13.4 2-3-4 tree rotations and fusion
13.5 2-3-4 tree removal
14. Additional Material
14.1 Bubble sort
14.2 Quickselect
14.3 Bucket sort
14.4 List data structure
14.5 Circular lists
Teach Data Structures in pseudocode with this hands-on, interactive zyBook
Data Structures Essentials is suitable for a first course in data structures and algorithms, especially common in the first two years of a computing major.
- Introduces the basics of algorithms and data structures, including sorting, runtime complexity, lists, stacks, queues, hash tables, trees, and graphs
- Packed with over 1,000 learning questions and animations to help students master the material
- Language-independent pseudocode is used to help learners master fundamental concepts
- Adopters have access to a test bank with over 400 questions
We developed our “say, show, ask” pedagogy – minimal text, interactive animations, and embedded questions – to foster active learning that engages students.
What is a zyBook?
Data Structures Essentials is a web-native, interactive zyBook that helps students visualize concepts to learn faster and more effectively than with a traditional textbook. (Check out our research.)
Since 2012, over 1,700 academic institutions have adopted digital zyBooks to transform their STEM education.
Authors
Roman Lysecky
Professor Emeritus of Electrical and Computer Engineering, Univ. of Arizona
Frank Vahid
Computer Science PhD, Univ. of California, Irvine / zyBooks Co-Founder
Evan Olds
Senior Content Developer, zyBooks