Secure Data Structures and Algorithms with C++: Walls and Mirrors
Contents at a Glance
The Foundation
Chapter 1 Data Abstraction: The Walls
C++ Interlude 1 C++ Classes
Chapter 2 Bags
Chapter 3 Array-Based Implementations
C++ Interlude 2 Memory Allocation, Pointers, and Polymorphism
Chapter 4 Link-Based Implementations
Chapter 5 Recursion: The Mirrors
Chapter 6 Recursion as a Problem-Solving Technique
Chapter 7 Algorithm Efficiency
ADTs and Algorithms for Position-Oriented Access
Chapter 8 Stacks
C++ Interlude 3 Exceptions
Chapter 9 Stack Implementations
Chapter 10 Queues and Deques
C++ Interlude 4 Safe Memory Management Using Smart Pointers
Chapter 11 Queue and Deque Implementations
Chapter 12 Lists
Chapter 13 List Implementations
ADTs and Algorithms for Value-Oriented Access
Chapter 14 Basic Sorting Algorithms and Their Efficiency
Chapter 15 Advanced Sorting Algorithms
C++ Interlude 5 Class Relationships and Reuse
Chapter 16 Sorted Lists and Their Implementations
Chapter 17 Trees
C++ Interlude 6 Overloaded Operators and Friend Access
Chapter 18 Tree Implementations
Chapter 19 Binary Search Trees
Chapter 20 Implementing a Binary Search Tree
Chapter 21 Priority Queues and Heaps
Chapter 22 Heap and Priority Queue Implementations
Advanced ADTs and Algorithms
C++ Interlude 7 Iterators
Chapter 23 Maps and Their Implementations
Chapter 24 Hashing as a Map Implementation
Chapter 25 2-3 Trees
Chapter 26 Advanced Search Trees
Chapter 27 Graphs
Chapter 28 Applications of Graphs
Chapter 29 Processing Data in External Storage
C++ Interlude 8 The C++ Standard Library
Appendices
Appendix A Review of C++ Fundamentals
Appendix B C++ File Fundamentals
Appendix C C++ Documentation Systems
Appendix D ASCII Character Codes
Appendix E Important Themes in Secure Programming
Appendix F The Unified Modeling Language
Appendix G Mathematical Induction
Appendix H Algorithm Verification
Appendix I C++ for Java Programmers
Appendix J C++ for Python Programmers
Index
Online Supplements
Glossary
Answers to Checkpoint Questions