Data Abstraction & Problem Solving with C++
Contents at a Glance
Chapter 1 Data Abstraction: The Walls
C++ Interlude 1 C++ Classes
Chapter 2 Recursion: The Mirrors
Chapter 3 Array-Based Implementations
C++ Interlude 2 Pointers, Polymorphism, and Memory Allocation
Chapter 4 Link-Based Implementations
Chapter 5 Recursion as a Problem-Solving Technique
Chapter 6 Stacks
C++ Interlude 3 Exceptions
Chapter 7 Stack Implementations
Chapter 8 Lists
Chapter 9 List Implementations
C++ Interlude 4 Safe Memory Management Using Smart Pointers
Chapter 10 Algorithm Efficiency
Chapter 11 Sorting Algorithms and Their Efficiency
C++ Interlude 5 Class Relationships and Reuse
Chapter 12 Sorted Lists and Their Implementations
Chapter 13 Queues and Priority Queues
Chapter 14 Queue Implementations
C++ Interlude 6 Overloaded Operators and Friend Access
Chapter 15 Trees
Chapter 16 Tree Implementations
Chapter 17 Heaps
C++ Interlude 7 Iterators
Chapter 18 Dictionaries and Their Implementations
Chapter 19 Balanced Search Trees
Chapter 20 Graphs
Chapter 21 Processing Data in External Storage
C++ Interlude 8 The Standard Template Library
Appendices
Appendix A Review of C++ Fundamentals
Appendix B Important Themes in Programming
Appendix C The Unified Modeling Language
Appendix D The software Life Cycle
Appendix E Mathematical Induction
Appendix F Algorithm Verification
Appendix G C++ File Fundamentals
Appendix H C++ Header Files and Standard Functions
Appendix I C++ Documentation Systems
Appendix J ASCII Character Codes
Appendix K C++ for Java Programmers
Appendix L C++ for Python Programmers
Index
Online Supplements
Glossary
Answers to Checkpoint Questions