This new edition of Data Structures and Abstractions with Java enhances the previous edition and continues its pedagogical approach to make the material accessible to students at the introductory level. The coverage that you enjoyed in previous editions is still here. As is usual for us, we have read every word of the previous edition and made changes to improve clarity and correctness. No chapter or interlude appears exactly as it did before. Our changes are motivated by reader suggestions and our own desire to improve the presentation.
In this new edition, we
• Adjusted the order of some topics.
• Added coverage of recursion in a new chapter that introduces grammars, languages, and
• Added additional Design Decisions, Notes, Security Notes, and Programming Tips
throughout the book.
• Added new exercises and programming projects, with an emphasis in areas of gaming,
e-commerce, and finance to most chapters.
• Refined our terminology, presentation, and word choices to ease understanding.
• Revised the illustrations to make them easier to read and to understand.
• Renamed Self-Test Questions as Study Questions and moved their answers to online.
We encourage our students to discuss their own answers with a study partner or group.
• Included the appendix about Java classes within the book instead of leaving it online.
• Reduced the amount of Java code given in the book.
• Ensured that all Java code is Java 9 compliant
And our table of contents:
Introduction Organizing Data
Prelude Designing Classes
Chapter 1 Bags
Java Interlude 1 Generics
Chapter 2 Bag Implementations That Use Arrays
Java Interlude 2 Exceptions
Chapter 3 A Bag Implementation That Links Data
Chapter 4 The Efficiency of Algorithms
Chapter 5 Stacks
Chapter 6 Stack Implementations
Java Interlude 3 More About Exceptions
Chapter 7 Queues, Deques, and Priority Queues
Chapter 8 Queue, Deque, and Priority Queue Implementations
Chapter 9 Recursion
Chapter 10 Lists
Chapter 11 A List Implementation That Uses an Array
Chapter 12 A List Implementation That Links Data
Java Interlude 4 Iterators
Chapter 13 Iterators for the ADT List
Chapter 14 Problem Solving With Recursion
Java Interlude 5 More About Generics
Chapter 15 An Introduction to Sorting
Chapter 16 Faster Sorting Methods
Java Interlude 6 Mutable and Immutable Objects
Chapter 17 Sorted Lists
Java Interlude 7 Inheritance and Polymorphism
Chapter 18 Inheritance and Lists
Chapter 19 Searching
Java Interlude 8 Generics Once Again
Chapter 20 Dictionaries
Chapter 21 Dictionary Implementations
Chapter 22 Introducing Hashing
Chapter 23 Hashing as a Dictionary Implementation
Chapter 24 Trees
Chapter 25 Tree Implementations
Java Interlude 9 Cloning
Chapter 26 A Binary Search Tree Implementation
Chapter 27 A Heap Implementation
Chapter 28 Balanced Search Trees
Chapter 29 Graphs
Chapter 30 Graph Implementations
Appendix A Documentation and Programming Style
Appendix B Java Classes
Appendix C Creating Classes from Other Classes
Supplement 1 Java Basics
Supplement 2 File Input and Output
Supplement 3 Glossary
Supplement 4 Answers to Study Questions