Data Abstraction and Problem Solving with Java: Walls and Mirrors / Edition 1

Data Abstraction and Problem Solving with Java: Walls and Mirrors / Edition 1

by Frank M. Carrano, Janet J. Prichard, Janet J. Prichard
     
 

View All Available Formats & Editions

ISBN-10: 0321197178

ISBN-13: 9780321197177

Pub. Date: 07/30/2003

Publisher: Pearson

Data Abstraction and Problem Solving in C++, and is now updated to the Java programming language. It uses the running theme of "Walls and Mirrors" to help make clear the challenging concepts of recursion (the mirrors) and data abstraction (the walls). Authors Carrano and Prichard cover key object-oriented concepts, including encapsulation, inheritance, and

Overview

Data Abstraction and Problem Solving in C++, and is now updated to the Java programming language. It uses the running theme of "Walls and Mirrors" to help make clear the challenging concepts of recursion (the mirrors) and data abstraction (the walls). Authors Carrano and Prichard cover key object-oriented concepts, including encapsulation, inheritance, and polymorphism. However, the focus of the book remains on data abstraction instead of simply Java syntax.

Features:
  • Provides a firm foundation in data abstraction (the walls), emphasizing the distinction between specification and implementation as the foundation for the object-oriented approach
  • Offers extensive coverage of recursion (the mirrors) and uses the technique throughout many examples and exercises.
  • Introduces analysis of algorithms and Big "O" notation.
  • Provides an appendix covering basic Java syntax for those know a different language or who need a refresher
  • Contains many pedagogical study aids such as programming pitfall warnings and self-tests with answers
  • A proven approach, adapted from the best selling Data Abstraction and Problem Solving in C++


Product Details

ISBN-13:
9780321197177
Publisher:
Pearson
Publication date:
07/30/2003
Edition description:
Updated Edition
Pages:
806
Product dimensions:
8.20(w) x 10.00(h) x 1.40(d)

Table of Contents

Prefaceiii
Chapter Dependency Chartv
Part IProblem-Solving Techniques1
Chapter 1Principles of Programming and Software Engineering3
Problem Solving and Software Engineering4
Achieving a Modular Design16
A Summary of Key Issues in Programming22
Summary40
Cautions41
Self-Test Exercises41
Exercises42
Programming Problems44
Chapter 2Recursion: The Mirrors47
Recursive Solutions48
Counting Things68
Searching An Array76
Organizing Data85
Recursion and Efficiency92
Summary95
Cautions95
Self-Test Exercises96
Exercises97
Programming Problems103
Chapter 3Data Abstraction: The Walls105
Abstract Data Types106
Specifying ADTs111
Implementing ADTs124
Summary144
Cautions145
Self-Test Exercises146
Exercises147
Programming Problems149
Chapter 4Linked Lists151
Preliminaries152
Programming with Linked Lists163
Variations of the Linked List186
Application: Maintaining an Inventory194
Summary200
Cautions202
Self-Test Exercises203
Exercises204
Programming Problems207
Chapter 5Recursion as a Problem-Solving Technique211
Backtracking212
Defining Languages217
The Relationship between Recursion and Mathematical Induction231
Summary234
Cautions235
Self-Test Exercises235
Exercises236
Programming Problems239
Part IIProblem Solving with Abstract Data Types245
Chapter 6Stacks247
The Abstract Data Type248
Simple Applications of the ADT Stack254
Implementations of the ADT Stack258
Application: Algebraic Expressions266
Application: A Search Problem271
The Relationship between Stacks and Recursion283
Summary286
Cautions286
Self-Test Exercises286
Exercises288
Programming Problems290
Chapter 7Queues297
The Abstract Data Type Queue298
Simple Applications of the ADT Queue300
Implementations of the ADT Queue302
A Summary of Position-Oriented ADTs314
Application: Simulation315
Summary325
Cautions325
Self-Test Exercises326
Exercises327
Programming Problems329
Chapter 8Class Relationships333
Inheritance Revisited334
Dynamic Binding and Abstract Classes345
The ADTs LIST and Sorted List Revisited354
The Advantages of an Object-Oriented Approach363
Summary364
Cautions365
Self-Test Exercises365
Exercises366
Programming Problems367
Chapter 9Algorithm Efficiency and Sorting371
Determining the Efficiency of Algorithms372
Sorting Algorithms and Their Efficiency384
Summary413
Cautions413
Self-Test Exercises414
Exercises415
Programming Problems418
Chapter 10Trees421
Terminology423
The ADT Binary Tree429
The ADT Binary Search Tree452
General Trees482
Summary484
Cautions484
Self-Test Exercises485
Exercises486
Programming Problems492
Chapter 11Tables and Priority Queues497
The ADT Table498
The ADT Priority Queue: A Variation of the ADT Table517
Summary534
Cautions534
Self-Test Exercises535
Exercises536
Programming Problems538
Chapter 12Advanced Implementations of Tables541
Balanced Search Trees542
Hashing578
Data with Multiple Organizations598
Summary604
Cautions605
Self-Test Exercises605
Exercises606
Programming Problems608
Chapter 13Graphs611
Terminology612
Graphs as ADTs615
Graph Traversals619
Applications of Graphs623
Summary642
Cautions643
Self-Test Exercises643
Exercises644
Programming Problems647
Chapter 14External Methods649
A Look at External Storage650
Sorting Data in an External File653
External Tables660
Summary683
Cautions684
Self-Text Exercises684
Exercises685
Programming Problems687
Appendices
Appendix AReview of Java Fundamentals689
Program Structure690
Language Basics696
Useful Java Classes706
Java Exceptions712
Text Input and Output720
Selection Statements722
Iteration Statements724
File Input and Output728
A Comparison to C++739
Summary742
Cautions744
Appendix BUnicode Character Codes (ASCII Subset)747
Appendix CJava Resources749
Appendix DMathematical Induction751
Glossary757
Answers to Self-Test Exercises775
Index791

Customer Reviews

Average Review:

Write a Review

and post it to your social network

     

Most Helpful Customer Reviews

See all customer reviews >