Home > Store

Data Abstraction and Problem Solving with C++, 2nd Edition

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

Data Abstraction and Problem Solving with C++, 2nd Edition

Book

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

About

Features

  • The challenging topic of Recursion (mirrors) is taught in Chapter 2 and used throughout so students master this important concept.
  • Data abstraction (walls) is taught in Chapter 3 and also carried throughout.
  • Focus on coverage of data structures instead of language syntax.
  • Updated to include recent enhancements of C++.
  • Includes enhanced discussion of the software life cycle as well as a brief description of risk analysis (Ch.1).
  • Provides more balance between numeric and nonnumeric examples of recursion (Ch. 2).

Description

  • Copyright 1998
  • Pages: 800
  • Edition: 2nd
  • Book
  • ISBN-10: 0-201-87402-4
  • ISBN-13: 978-0-201-87402-0

Focusing on data abstraction and data structures, the second edition of this very successful books continues to emphasize the needs of both the instructor and the student. The book illustrates the role of classes and abstract data types (ADTs) in the problem-solving process as the foundation for an object-oriented approach. Throughout the text, the distinction between specification and implementation is continually stressed. The text covers major applications of ADTs, such as searching a flight map and performing an event-driven simulation. It also offers early, extensive coverage of recursion and uses this technique in many examples and exercises. Overall, the lucid writing style, widespread use of examples, and flexible coverage of the materia have helped make this a leading book in the field.

New in this Edition
  • Uses recent enhancements to C++, such as data type bool and C++ strings
  • States ADT operations in English, specifies them in pseudocode, and finally implements them in C++. Students can see more clearly the progression from an informal statement of an operation to a more formal specification.
  • Offers new and revised examples of ADTs that clarify their relationships to classes as well as new coverage of dynamically allocated arrays and circuits
  • Provides more balance between numeric and nonnumeric examples of recursion
  • Contains many new exercises and programming problems

** Instructor's materials are available from your sales rep. If you do not know your local sales representative, please call 1-800-552-2499 for assistance, or use the Addison Wesley Longman rep-locator at http://hepg.awl.com/rep-locator.



0201874024B04062001

Downloads

Source Code

Click below for Source Code related to this title:
Source Code

Sample Content

Table of Contents

I. PROBLEM-SOLVING TECHNIQUES.

Principles of Programming and Software Engineering.
Problem Solving and Software Engineering.
Achieving a Modular Design.
A Summary of Key Issues in Programming.

Recursion: The Mirrors.
Recursive Solutions.
Counting Things.
Searching an Array Organizing Data.
Recursion and Efficiency.

Data Abstraction: The Walls.
Abstract Data Types.
Specifying ADTs.
Implementing ADTs.

Linked Lists.
Preliminaries.
Programming with Linked Lists.
Variations of the Linked List.
Application: Maintaining an Inventory.
Recursion as a Problem-Solving Technique.

Backtracking.
Defining Languages.
The Relationship Between Recursion and Mathematical Induction.

II. PROBLEM SOLVING WITH ABSTRACT DATA TYPES.

Stacks.
The Abstract Data Type Stack.
Simple Applications of the ADT Stack.
Implementations of the ADT Stack.
Application: Algebraic Expressions.
Application: A Search Problem.
The Relationship Between Stacks and Recursion.

Queues.
The Abstract Data Type Queue.
Simple Applications of the ADT Queue.
Implementations of the ADT Queue.
Application: Simulation.
A Summary of Position-Oriented ADTs.
Class Relationships.

Inheritance.
Virtual Functions and Late Binding.
The ADTs List and Sorted List Revisited.
Class Templates.
Overloaded Operators.
The Advantages of an Object-Oriented Approach.
Algorithm Efficiency And Sorting.
Measuring the Efficiency of Algorithms.
Keeping Your Perspective.
The Efficiency of Searching Algorithms.
Sorting Algorithms and Their Efficiency.
A Comparison of Sorting Algorithms.

Trees.
Terminology.
The ADT Binary Tree.
The ADT Binary Search Tree.
General Trees.

Tables and Priority Queues.
The ADT Table.
The ADT Priority Queue: A Variation of the ADT Table.

Advanced Implementations of Tables.
Balanced Search Trees.
Hashing.
Data with Multiple Organizations.

Graphs.
Terminology.
Graphs as ADTs.
Graph Traversals.
Applications of Graphs.

External Methods.
A Look at External Storage.
Sorting Data in an External File.
External Tables.

Appendix A. Review of C++ Fundamentals.
Language Basics.
Input and Output Using iostream.
Functions.
Selection Statements.
Iteration Statements.
Arrays.
Strings.
Structures.
File Input and Output.
Libraries.

Appendix B. ASCII Character Codes.
Appendix C. C++ Header Files And Standard Functions.
Appendix D. Mathematical Induction.
Glossary. 0201874024T04062001

Updates

Errata

p 90: In Fig. 2-20, the box labeled 2 should contain SolveTowers(2,A,C,B).

p156: In the middle of the page, insert an "=" between "B" and "new".

The line should read
double* B = new double[ArraySize];

p 157: line 14: Replace the line with

B = new double[2*ArraySize] // double array size

p 285: Add the argument CityFileName to the function ReadFlightMap.

p 368: line 2 ran off the page; it should be

listClass(SL)

p 374 (middle of page): Quotes are missing from the include

statement at the end of the header file; i.e. #include "ListT.cpp"

p 374: Delete the next-to-last line (#include "ListT.h")

p 456: CopyTree should be a const function.

p 457: GetChildPtrs should be a const function.

p 461: CopyTree should be a const function.

p 462: GetChildPtrs should be a const function.

p 490: In the first precondition, replace RootPtr with NodePtr two times.

CopyTree should be a const function.
GetChildPtrs should be a const function.

p 657 The margin note states "A Hamilton circuit ... passes through every edge exactly once...."; 'edge' should be 'vertex'.

Corrections made to the Source Code as of 3/27/98:

The file c06p166 was renamed c06p266.
The files c10p455 and c10p457 were corrected.

Corrections made to the Source Code as of 4/15/98:

The files c08p373, c10p455, c10p457, and c10p487 were corrected.

Submit Errata

More Information

InformIT Promotional Mailings & Special Offers

I would like to receive exclusive offers and hear about products from InformIT and its family of brands. I can unsubscribe at any time.