Synopses & Reviews
An updated, innovative approach to data structures and algorithms
Written by an author team of experts in their fields, this authoritative guide demystifies even the most difficult mathematical concepts so that you can gain a clear understanding of data structures and algorithms in C++.
The unparalleled author team incorporates the object-oriented design paradigm using C++ as the implementation language, while also providing intuition and analysis of fundamental algorithms.
- Offers a unique multimedia format for learning the fundamentals of data structures and algorithms
- Allows you to visualize key analytic concepts, learn about the most recent insights in the field, and do data structure design
- Provides clear approaches for developing programs
- Features a clear, easy-to-understand writing style that breaks down even the most difficult mathematical concepts
Building on the success of the first edition, this new version offers you an innovative approach to fundamental data structures and algorithms.
* Presents a consistent object-oriented perspective.
* Recursion emphasized throughout, particularly in chapters 2 and 4.
* Design patterns provide clear approaches for developing programs.
* Offers a unique multimedia format for learning the fundamentals of data structures and algorithms.
* A robust set of end-of-chapter problems are arranged by purpose - reinforcement problems assess understanding; creativity problems require students to apply concepts to writing "classes" (portions of a program); projects require students to write entire programs.
* Outstanding writing style presents even the most difficult mathematical concepts clearly.
* "Visual Proofs" helps students better understand complex analytic concepts.
* Animations on the text's Web site clearly illustrate data structures and algorithms.
* Exercises offer numerous opportunities for hands-on learning.
* Emphasizes the practical application of the latest software engineering practices.
Table of Contents
1. A C++ Primer.
1.1 Basic C++ Programming Elements.
1.3 Control Flow.
1.6 C++ Program and File Organization.
1.7 Writing a C++ Program.
2. Object-Oriented Design.
2.1 Goals, Principles, and Patterns.
2.2 Inheritance and Polymorphism.
3. Arrays, Linked Lists, and Recursion.
3.1 Using Arrays.
3.2 Singly Linked Lists.
3.3 Doubly Linked Lists.
3.4 Circularly Linked and List Reversal.
4. Analysis Tools.
4.1 The Seven Functions Used in This Book.
4.2 Analysis of Algorithms.
4.3 Simple Justification Techniques.
5. Stacks, Queues, and Deques.
5.3 Double-Ended Queues.
6. List and Iterator ADTs.
6.4 Case Study: Bubble-Sort on a Sequence.
7.1 General Trees.
7.2 Tree Traversal Algorithms.
7.3 Binary Trees.
8. Heaps and Priority Queues.
8.1 The Priority Queue Abstract Data Type.
8.2 Implementing a Priority Queue with a List.
8.4 Adaptable Priority Queues.
9. Hash Tables, Maps, and Skip Lists.
9.2 Hash Tables.
9.3 Ordered Maps.
9.4 Skip Lists.
10. Search Trees.
10.1 Binary Search Trees.
10.2 AVL Trees.
10.3 Splay Trees.
10.4 (2,4) Trees.
10.5 Red-Black Trees.
11. Sorting, Sets, and Selection.
11.3 Studying Sorting through and Algorithmic Lens.
11.4 Sets and Union/Find Structures.
12. Strings and Dynamic Programming.
12.1 String Operations.
12.2 Dynamic Programming.
12.3 Pattern Matching Algorithms.
12.4 Text Compression and the Greedy Method.
13. Graph Algorithms.
13.2 Data Structures for Graphs.
13.3 Graph Traversals.
13.4 Directed Graphs.
13.5 Shortest Paths.
13.6 Minimum Spanning Trees.
14. Memory Management and B-Trees.
14.1 Memory Management.
14.2 External Memory and Caching.
14.3 External Searching and B-Trees.
14.4 External-Memory Sorting.
A Useful Mathematical Facts.