Home > Store > Programming > C/C++

Data Abstraction & Problem Solving with C++, 5th Edition

Register your product to gain access to bonus material or receive a coupon.

Data Abstraction & Problem Solving with C++, 5th Edition


  • Sorry, this book is no longer in print.
Not for Sale



  • Provides a strong introduction to, and continuous use of, data abstraction emphasizing the distinction between specification and implementation
  • Features extensive coverage of object-oriented programming techniques
  • Focuses on core data structures instead of non-essential C++ language syntax
  • Illustrates the role of classes and ADTs in the problem-solving process
  • Includes major applications of ADTs, such as searching a flight map, event-driven simulation, and the eight queens problem
  • Covers the use of the Standard Template Library (STL) with examples included in most chapters
  • Provides the best coverage of recursion available
  • Includes an appendix, "Basic C++ Syntax", for students who are making the transition from another language to C++


  • Copyright 2007
  • Dimensions: 7-3/8" x 9-1/8"
  • Pages: 992
  • Edition: 5th
  • Book
  • ISBN-10: 0-321-43332-7
  • ISBN-13: 978-0-321-43332-9

The classic, best-selling Data Abstraction and Problem Solving with C++: Walls and Mirrors book provides a firm foundation in data abstraction that emphasizes the distinction between specifications and implementation as the basis for an object-oriented approach. This new edition offers the latest C++ features and an introduction to using Doxygen——a documentation generator for C++, enhanced coverage of Software Engineering concepts and additional UML diagrams. 

Frank’s Making it Real blog http://frank-m-carrano.com/blog/ extends his textbooks and lectures to a lively discussion with instructors and students about teaching and learning computer science.

Follow Frank on Twitter: http://twitter.com/Frank_M_Carrano

Find him on Facebook: https://www.facebook.com/makingitreal

Sample Content

Table of Contents


Chapter Dependency Chart

PART ONE - Problem-Solving Techniques

1 Principles of Programmingand Software Engineering

1.1Software Engineering and Object-Oriented Design

1.2 Achieving a Better Solution

1.3 Key Issues in Programming

2 Recursion: The Mirrors

2.1 Recursive Solutions

2.2 Counting Things

2.3 Searching an Array

2.4 Organizing Data

2.5 Recursion and Efficiency

3 Data Abstraction: The Walls

3.1 Abstract Data Types

3.2 Specifying ADTs

3.3 Implementing ADTs

4 Linked Lists

4.1 Preliminaries

4.2 Programming with Linked Lists

4.3 Variations of the Linked List

4.4 Application: Maintaining an Inventory

4.5 The C++ Standard Template Library

5 Recursion as a Problem-Solving Technique

5.1 Backtracking

5.2 Defining Languages

5.3 The Relationship Between Recursionand Mathematical Induction

PART TWO Problem Solving with Abstract Data Types

6 Stacks

6.1 The Abstract Data Type Stack

6.2 Simple Applications of the ADT Stack

6.3 Implementations of the ADT Stack

6.4 Application: Algebraic Expressions

6.5 Application: A Search Problem

6.6 The Relationship Between Stacks and Recursion

7 Queues

7.1 The Abstract Data Type Queue

7.2 Simple Applications of the ADT Queue

7.3 Implementations of the ADT Queue

7.4 A Summary of Position-Oriented ADTs

7.5 Application: Simulation

8 Advanced C++ Topics

8.1 Inheritance Revisited

8.2 Virtual Methods and Late Binding

8.3 Friends

8.4 The ADTs List and Sorted List Revisited

8.5 Class Templates

8.6 Overloaded Operators

8.7 Iterators

9 Algorithm Efficiency and Sorting

9.1 Measuring the Efficiency of Algorithms

9.2 Sorting Algorithms and Their Efficiency

10 Trees

10.1 Terminology

10.2 The ADT Binary Tree

10.3 The ADT Binary Search Tree

10.4 General Trees

11 Tables and Priority Queues

11.1 The ADT Table

11.2 The ADT Priority Queue: A Variation of the ADT Table

11.3 Tables and Priority Queues in the STL

12 Advanced Implementations of Tables

12.1 Balanced Search Trees

12.2 Hashing

12.3 Data with Multiple Organizations

13 Graphs

13.1 Terminology

13.2 Graphs as ADTs

13.3 Graph Traversals

13.4 Applications of Graphs

14 Processing Data in External Storage

14.1 A Look at External Storage

14.2 Sorting Data in an External File

14.3 External Tables

A  Review of C++ Fundamentals

B  ASCII Character Codes

C  C++ Header Files and Standard Functions

D  Mathematical Induction

E  Standard Template Library

F  C++ Documentation Systems


Submit Errata

More Information

Unlimited one-month access with your purchase
Free Safari Membership