Data Structures and Abstractions with Java
Brief 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
Appendices
Appendix A Documentation and Programming Style
Appendix B Java Classes
Appendix C Creating Classes from Other Classes
Online Supplements
Supplement 1 Java Basics
Supplement 2 File Input and Output
Supplement 3 Glossary
Supplement 4 Answers to Study Questions