Projects
1`
Arrays Linked Lists and Recursion
3 4 Circularly Linked Lists and List Reversal 129
3 4 1 Circularly Linked Lists 129
3 4 2 Reversing a Linked List 133
2`
List and Iterator ADTs
6 4 Case Study: Bubble-Sort on a Sequence 259
6 4 1 The Bubble-Sort Algorithm 259
6 4 2 A Sequence-Based Analysis of Bubble-Sort 260
3`
Heaps and Priority Queues
8 3 Heap
8 3 6 Bottom-Up Heap Construction⋆ 353
4`
Heaps and Priority Queues
8 4 Adaptable Priority Queues 357
8 4 1 A List-Based Implementation 358
8 4 2 Location-Aware Entries 360
5`
Hash Tables Maps and Skip Lists
9 1 Maps 368
9 1 1 The Map ADT 369
9 1 2 A C++ Map Interface 371
6`
Hash Tables Maps and Skip Lists
9 1 3 The STL map Class 372
9 1 4 A Simple List-Based Map Implementation 374
7`
Hash Tables Maps and Skip Lists
9.2.7 A C++ Hash Table Implementation 387
8`
Hash Tables Maps and Skip Lists
9 4 Skip Lists 402
9 4 1 Search and Update Operations in a Skip List 404
9`
Sorting Sets and Selection
11 1 Merge-Sort 500
11 1 1 Divide-and-Conquer 500
10`
Sorting Sets and Selection
11 1 2 Merging Arrays and Lists 505
11 1 3 The Running Time of Merge-Sort 508
11 1 4 C++ Implementations of Merge-Sort 509
11`
Sorting Sets and Selection
11 2 Quick-Sort 513
12`
Sorting Sets and Selection
11 2 1 Randomized Quick-Sort 521
11 2 2 C++ Implementations and Optimizations 523
13`
Sorting Sets and Selection
11 3 Studying Sorting through an Algorithmic Lens 526
11 3 1 A Lower Bound for Sorting 526
11 3 2 Linear-Time Sorting: Bucket-Sort and Radix-Sort 528
Bucket-Sort
14`
Sorting Sets and Selection
11 3 Studying Sorting through an Algorithmic Lens
11 3 2 Linear-Time Sorting: Bucket-Sort and Radix-Sort 528
Radix-Sort
11 3 3 Comparing Sorting Algorithms 531
15`
Sorting Sets and Selection
11 4 Sets and Union/Find Structures 533
11 4 1 The Set ADT 533
11 4 2 Mergable Sets and the Template Method Pattern 534
16`
Sorting Sets and Selection
11 4 Sets and Union/Find Structures
11 4 3 Partitions with Union-Find Operations 538
17`
Sorting Sets and Selection
11 5 Selection 542
11 5 1 Prune-and-Search 542
11 5 2 Randomized Quick-Select 543
11 5 3 Analyzing Randomized Quick-Select 544
18`
Strings and Dynamic Programming
12 1 1 The STL String Class 555
19`
Strings and Dynamic Programming
12 2 Dynamic Programming 557
12 2 1 Matrix Chain-Product 557
20
Strings and Dynamic Programming
12 2 Dynamic Programming
12 2 2 DNA and Text Sequence Alignment 560
21
Strings and Dynamic Programming
12 3 Pattern Matching Algorithms 564
12 3 1 Brute Force 564 + implementation in C++
22`
Strings and Dynamic Programming
12 3 Pattern Matching Algorithm
12 3 2 The Boyer-Moore Algorithm 566
23`
Strings and Dynamic Programming
12 3 Pattern Matching Algorithm
12 3 3 The Knuth-Morris-Pratt Algorithm 570
Data Structures and Algorithms in C++ 2e
24`
Strings and Dynamic Programming
12 4 Text Compression and the Greedy Method 575
12 4 1 The Huffman-Coding Algorithm 576 + implementation in C++
12 4 2 The Greedy Method 577
25`
Strings and Dynamic Programming
12 5 Tries 578
12 5 1 Standard Tries 578
26`
Strings and Dynamic Programming
12 5 Tries
12 5 2 Compressed Tries 582
27`
Strings and Dynamic Programming
12 5 Tries
12 5 3 Suffix Tries 584
12 5 4 Search Engines 586
28
Memory Management and B-Trees 665
14 1 Memory Management 666
14 1 1 Memory Allocation in C++ 669
14 1 2 Garbage Collection 671
29
Memory Management and B-Trees
14 2 External Memory and Caching 673
14 2 1 The Memory Hierarchy 673
14 2 2 Caching Strategies 674
30
Memory Management and B-Trees
14 3 External Searching and B-Trees 679
14 3 1 (a,b) Trees 680
14 3 2 B-Trees 682
31`
Memory Management and B-Trees
14 4 External-Memory Sorting 683
14 4 1 Multi-Way Merging 684