Walls and Mirrors

Data Abstraction and Problem Solving with C++: Walls and Mirrors 

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


Glossary (online)

Answers to Checkpoint Questions (Online)

What's New?

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.
    Note that we tested the C++ code using the following compilers: GNU g++, clang/LLVM, Xcode 6.x, 
    and Visual Studio 2013 and 2015RC.
  • 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.

No comments:

Post a Comment