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