Abstract Data Types / Chapter 1: |
Introduction / 1.1: |
Abstractions / 1.1.1: |
Data Structures / 1.1.2: |
The Date ADT / 1.2: |
Preconditions and Postconditions / 1.2.1: |
Using the ADT / 1.2.2: |
Implementing the ADT / 1.2.3: |
The Bag ADT / 1.3: |
Selecting a Data Structure / 1.3.1: |
The Class Definition / 1.3.3: |
Iterators / 1.4: |
The Set ADT / 1.5: |
The Map ADT / 1.5.1: |
Defining the ADT / 1.6.1: |
Implementing the Map ADT / 1.6.2: |
Alternate Implementation / 1.6.3: |
Application: Histograms / 1.7: |
Building a Histogram / 1.7.1: |
Implementing the Histogram ADT / 1.7.2: |
Programming Problems |
Arrays and Vectors / Chapter 2: |
The Array Structure / 2.1: |
Simulating an Array / 2.1.1: |
The Array ADT / 2.1.2: |
The Python List (Vector) / 2.1.3: |
Multi-Dimensional Arrays / 2.3: |
The MultiArray ADT / 2.3.1: |
Data Organization / 2.3.2: |
Variable Length Arguments / 2.3.3: |
MultiArray Implementation / 2.3.4: |
The Matrix ADT / 2.4: |
Matrix Operations / 2.4.1: |
Application: The Game of Life / 2.4.2: |
Rules of the Game / 2.5.1: |
Designing a Solution / 2.5.2: |
ADT Implementation / 2.5.3: |
Exercises |
Algorithm Analysis / Chapter 3: |
Complexity Analysis / 3.1: |
Big-O Notation / 3.1.1: |
Classes of Algorithms / 3.1.2: |
Empirical Analysis / 3.1.3: |
Evaluating ADT Implementations / 3.2: |
Evaluating the Python List / 3.2.1: |
Evaluating the Set ADT / 3.2.2: |
Searching / 3.3: |
Linear Search / 3.3.1: |
Binary Search / 3.3.2: |
Working with Ordered Lists / 3.4: |
Building An Ordered List / 3.4.1: |
Merging Ordered Lists / 3.4.2: |
The Set ADT Revisited / 3.5: |
Application: The Sparse Matrix / 3.6: |
Implementation / 3.6.1: |
Analysis / 3.6.2: |
The Linked List / Chapter 4: |
A Linked Structure / 4.1: |
The Singly-Linked List / 4.2: |
Basic Operations / 4.2.1: |
Evaluating the Linked List / 4.2.2: |
The Bag ADT Revisited / 4.3: |
Implementation Details / 4.3.1: |
Linked List Iterator / 4.3.2: |
Using a Tail Pointer / 4.4: |
The Ordered Linked List / 4.5: |
The Sparse Matrix Revisited / 4.6: |
The New Implementation / 4.6.1: |
Comparing Implementations / 4.6.2: |
Application: Polynomials / 4.7: |
Polynomial Operations / 4.7.1: |
The Polynomial ADT / 4.7.2: |
Advanced Linked Lists / 4.7.3: |
Doubly-Linked List / 5.1: |
Organization / 5.1.1: |
List Operations / 5.1.2: |
Circular Linked List / 5.2: |
Multi-Linked Lists / 5.2.1: |
Multiple Chains / 5.3.1: |
The Sparse Matrix / 5.3.2: |
Complex Iterators / 5.4: |
Application: Text Editor / 5.5: |
Typical Editor Operations / 5.5.1: |
The Edit Buffer ADT / 5.5.2: |
Stacks / 5.5.3: |
The Stack ADT / 6.1: |
Implementing the Stack / 6.2: |
Vector Based / 6.2.1: |
Linked List Version / 6.2.2: |
Stack Applications / 6.3: |
Balanced Delimiters / 6.3.1: |
Evaluating Postfix Expressions / 6.3.2: |
Application: Solving a Maze / 6.4: |
Backtracking / 6.4.1: |
The Maze ADT / 6.4.2: |
Queues / 6.4.4: |
The Queue ADT / 7.1: |
Implementing the Queue / 7.2: |
Circular Array / 7.2.1: |
The Priority Queue / 7.2.3: |
Application: Computer Simulations / 7.4: |
Airline Ticket Counter / 7.4.1: |
Class Specifications / 7.4.2: |
Hash Tables / Chapter 8: |
Hash Functions / 8.1: |
Open Addressing / 8.3: |
Linear Probing / 8.3.1: |
Collision Resolution / 8.3.2: |
Bucket Hashing / 8.4: |
Hashing Efficiency / 8.5: |
The Map ADT Revisited / 8.6: |
Application: The Color Histogram / 8.7: |
Recursion / Chapter 9: |
Recursive Functions / 9.1: |
Properties of Recursion / 9.2: |
Classic Example: The Factorial Function / 9.2.1: |
Greatest Common Divisor / 9.2.2: |
Recursion and Stacks / 9.3: |
The Towers of Hanoi / 9.4: |
Backtracking Revisited / 9.5: |
The Eight-Queens Problem / 9.5.1: |
Solving the Four-Queens / 9.5.2: |
Recursive Solution / 9.5.3: |
Application: Sudoku Puzzles / 9.6: |
Binary Trees and Heaps / Chapter 10: |
Tree Structure / 10.1: |
The Binary Tree / 10.2: |
Traversals / 10.2.1: |
Arithmetic Expresssions / 10.2.2: |
Tree Threading / 10.3: |
Heaps / 10.4: |
Insertions / 10.4.1: |
Removals / 10.4.2: |
Evaluating the Heap / 10.4.3: |
The Priority Queue Revisited / 10.4.4: |
Application: Morse Code / 10.5: |
Advanced Search Trees / Chapter 11: |
The Binary Search Tree / 11.1: |
Deletions / 11.1.1: |
Evaluating the BST / 11.1.4: |
AVL Trees / 11.2: |
Evaluating the AVL Tree / 11.2.1: |
2-3 Trees / 11.3: |
Splay Trees / 11.4: |
Application: Improved Map ADT / 11.5: |
Sorting Algorithms / Chapter 12: |
The Simple Algorithms / 12.1: |
Bubble Sort / 12.1.1: |
Selection Sort / 12.1.2: |
Insertion Sort / 12.1.3: |
Radix Sort / 12.2: |
Basic Algorithm / 12.2.1: |
Bucket Sorting / 12.2.2: |
Divide and Conquer / 12.3: |
Merge Sort / 12.3.1: |
Quick Sort / 12.3.2: |
Heap Sort / 12.4: |
Application: Empirical Analysis / 12.5: |
Python Review / Appendix A: |
Basic Concepts / A.1: |
Functions / A.2: |
Sequence Types / A.3: |
Classes / A.4: |
Copying Objects / A.5: |
Exceptions / A.6: |
Object-Oriented Programming / Appendix B: |
Encapsulation / B.1: |
Inheritance / B.3: |
Polymorphism / B.4: |
Abstract Data Types / Chapter 1: |
Introduction / 1.1: |
Abstractions / 1.1.1: |