|
Data Abstraction & Problem Solving with C++: Walls & Mirrors 5th Edition
Data Structures/C++
Data Abstraction and Problem Solving with C++: Walls and Mirrors
Frank M. Carrano, Universityof Rhode Island
This fifth edition of the classic, best-selling book Data Abstraction and
Problem Solving with C++: Walls and Mirrors continues to offer students a superior foundation in data abstraction,
object-oriented programming, and problem-solving techniques. The focus is on core abstract data types with the consistent use of data abstraction emphasizing the distinction between specification and implementation.
Fifth Edition highlights:
? Completely revised software engineering concepts to conform with modern practice
? NEW! Introduces techniques for testing software
? NEW! Presents ADT (abstract data type) behaviors as operation contracts
? Includes extensive coverage of object-oriented programming techniques
? NEW! Includes an introduction to Doxygen, a documentation generator for
C++ that is similar to Javadoc
? Contains 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
? Updated all C++ code to ensure compliance with the latest ANSI standards
? Includes ??Review of C++ Fundamentals? appendix for students who are making the transition to C++ from another language
Addison-Wesley Computing
Leading Authors ? Quality Products
Visit aw.com/computing for more information about Addison-Wesley computing books.
ISBN 0-321-43332-7
CONTENTS:
Preface
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
|