
Data Abstraction and Problem Solving with Java: Walls and Mirrors / Edition 1
by Frank M. Carrano, Janet J. Prichard, Janet J. PrichardView 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/i>
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
Preface | iii | |
Chapter Dependency Chart | v | |
Part I | Problem-Solving Techniques | 1 |
Chapter 1 | Principles of Programming and Software Engineering | 3 |
Problem Solving and Software Engineering | 4 | |
Achieving a Modular Design | 16 | |
A Summary of Key Issues in Programming | 22 | |
Summary | 40 | |
Cautions | 41 | |
Self-Test Exercises | 41 | |
Exercises | 42 | |
Programming Problems | 44 | |
Chapter 2 | Recursion: The Mirrors | 47 |
Recursive Solutions | 48 | |
Counting Things | 68 | |
Searching An Array | 76 | |
Organizing Data | 85 | |
Recursion and Efficiency | 92 | |
Summary | 95 | |
Cautions | 95 | |
Self-Test Exercises | 96 | |
Exercises | 97 | |
Programming Problems | 103 | |
Chapter 3 | Data Abstraction: The Walls | 105 |
Abstract Data Types | 106 | |
Specifying ADTs | 111 | |
Implementing ADTs | 124 | |
Summary | 144 | |
Cautions | 145 | |
Self-Test Exercises | 146 | |
Exercises | 147 | |
Programming Problems | 149 | |
Chapter 4 | Linked Lists | 151 |
Preliminaries | 152 | |
Programming with Linked Lists | 163 | |
Variations of the Linked List | 186 | |
Application: Maintaining an Inventory | 194 | |
Summary | 200 | |
Cautions | 202 | |
Self-Test Exercises | 203 | |
Exercises | 204 | |
Programming Problems | 207 | |
Chapter 5 | Recursion as a Problem-Solving Technique | 211 |
Backtracking | 212 | |
Defining Languages | 217 | |
The Relationship between Recursion and Mathematical Induction | 231 | |
Summary | 234 | |
Cautions | 235 | |
Self-Test Exercises | 235 | |
Exercises | 236 | |
Programming Problems | 239 | |
Part II | Problem Solving with Abstract Data Types | 245 |
Chapter 6 | Stacks | 247 |
The Abstract Data Type | 248 | |
Simple Applications of the ADT Stack | 254 | |
Implementations of the ADT Stack | 258 | |
Application: Algebraic Expressions | 266 | |
Application: A Search Problem | 271 | |
The Relationship between Stacks and Recursion | 283 | |
Summary | 286 | |
Cautions | 286 | |
Self-Test Exercises | 286 | |
Exercises | 288 | |
Programming Problems | 290 | |
Chapter 7 | Queues | 297 |
The Abstract Data Type Queue | 298 | |
Simple Applications of the ADT Queue | 300 | |
Implementations of the ADT Queue | 302 | |
A Summary of Position-Oriented ADTs | 314 | |
Application: Simulation | 315 | |
Summary | 325 | |
Cautions | 325 | |
Self-Test Exercises | 326 | |
Exercises | 327 | |
Programming Problems | 329 | |
Chapter 8 | Class Relationships | 333 |
Inheritance Revisited | 334 | |
Dynamic Binding and Abstract Classes | 345 | |
The ADTs LIST and Sorted List Revisited | 354 | |
The Advantages of an Object-Oriented Approach | 363 | |
Summary | 364 | |
Cautions | 365 | |
Self-Test Exercises | 365 | |
Exercises | 366 | |
Programming Problems | 367 | |
Chapter 9 | Algorithm Efficiency and Sorting | 371 |
Determining the Efficiency of Algorithms | 372 | |
Sorting Algorithms and Their Efficiency | 384 | |
Summary | 413 | |
Cautions | 413 | |
Self-Test Exercises | 414 | |
Exercises | 415 | |
Programming Problems | 418 | |
Chapter 10 | Trees | 421 |
Terminology | 423 | |
The ADT Binary Tree | 429 | |
The ADT Binary Search Tree | 452 | |
General Trees | 482 | |
Summary | 484 | |
Cautions | 484 | |
Self-Test Exercises | 485 | |
Exercises | 486 | |
Programming Problems | 492 | |
Chapter 11 | Tables and Priority Queues | 497 |
The ADT Table | 498 | |
The ADT Priority Queue: A Variation of the ADT Table | 517 | |
Summary | 534 | |
Cautions | 534 | |
Self-Test Exercises | 535 | |
Exercises | 536 | |
Programming Problems | 538 | |
Chapter 12 | Advanced Implementations of Tables | 541 |
Balanced Search Trees | 542 | |
Hashing | 578 | |
Data with Multiple Organizations | 598 | |
Summary | 604 | |
Cautions | 605 | |
Self-Test Exercises | 605 | |
Exercises | 606 | |
Programming Problems | 608 | |
Chapter 13 | Graphs | 611 |
Terminology | 612 | |
Graphs as ADTs | 615 | |
Graph Traversals | 619 | |
Applications of Graphs | 623 | |
Summary | 642 | |
Cautions | 643 | |
Self-Test Exercises | 643 | |
Exercises | 644 | |
Programming Problems | 647 | |
Chapter 14 | External Methods | 649 |
A Look at External Storage | 650 | |
Sorting Data in an External File | 653 | |
External Tables | 660 | |
Summary | 683 | |
Cautions | 684 | |
Self-Text Exercises | 684 | |
Exercises | 685 | |
Programming Problems | 687 | |
Appendices | ||
Appendix A | Review of Java Fundamentals | 689 |
Program Structure | 690 | |
Language Basics | 696 | |
Useful Java Classes | 706 | |
Java Exceptions | 712 | |
Text Input and Output | 720 | |
Selection Statements | 722 | |
Iteration Statements | 724 | |
File Input and Output | 728 | |
A Comparison to C++ | 739 | |
Summary | 742 | |
Cautions | 744 | |
Appendix B | Unicode Character Codes (ASCII Subset) | 747 |
Appendix C | Java Resources | 749 |
Appendix D | Mathematical Induction | 751 |
Glossary | 757 | |
Answers to Self-Test Exercises | 775 | |
Index | 791 |
Customer Reviews
Average Review: