7th ed., Carrano and Henry
This book’s organization, sequencing, and pace of topic coverage make learning and teaching easier by focusing your attention on one concept at a time, by providing flexibility in the order in which you can cover topics, and by clearly distinguishing between the specification and implementation of abstract data types, or ADTs. To accomplish these goals, we have organized the material into 21 chapters and 8 interludes. Most chapters focus on either the specification and use of an ADT or its various implementations. You can choose to cover the specification of an ADT followed by its implementations, or you can treat the specification and use of several ADTs before you consider any implementation issues. The book’s organization makes it easy for you to choose the topic order that you prefer.
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
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 Character Codes
Appendix K C++ for Java Programmers
Appendix L C++ for Python Programmers
Answers to Checkpoint Questions (Online)
This edition of Walls and Mirrors is an important enhancement of the previous edition, yet retains a pedagogical approach that makes the material accessible to students at the introductory level. The coverage that you enjoyed in previous editions is still here. As is usual for us, we have read every word of the previous edition and made changes to improve clarity and correctness. No chapter or interlude appears exactly as it did before. In this new edition, we
- Updated the C++ code to follow professional conventions by using
- Exceptions rather than return values to signal unusual situations.
- Safe and secure coding techniques, such as those found in SEI CERT Coding Standards.
- C++11 and C++14 features where applicable.
- Refined our terminology and presentation to ease understanding.
- Revised figures to improve clarity.
- Replaced technologically dated examples.
- Added Notes and Programming Tips.
- Added programming problems in the areas of gaming, finance, and e-commerce.
- Added Security Notes as a new element.
- Added a new C++ Interlude 4, “Safe Memory Management Using Smart Pointers,” midway in the book to introduce smart pointers, a C++11 feature. Chapters subsequent to this interlude use smart pointers.