Table of Content
Chapter List CHAPTER 1 The Phases of Software Development 1.1 Specification, Design, Implementation 1.2 Running Time Analysis 1.3 Testing and Debugging Chapter Summary and Solutions CHAPTER 2 Java Classes and Information Hiding 2.1 Classes and Their Members 2.2 Using a Class 2.3 Packages 2.4 Parameters, Equals Methods, and Clones Chapter Summary, Solutions and Projects CHAPTER 3 Collection Classes 3.1 A Review of Java Arrays 3.2 An ADT for a Bag of Integers 3.3 Programming Project: The Sequence ADT 3.4 Programming Project: The Polynomial Chapter Summary, Solutions and Projects CHAPTER 4 Linked Lists 4.1 Fundamentals of Linked Lists 4.2 Methods for Manipulating Nodes 4.3 Manipulating an Entire Linked List 4.4 The Bag ADT with a Linked List 4.5 Programming Project: The Sequence ADT with a Linked List 4.6 Beyond Simple Linked Lists CHAPTER 5 Generic Programming 5.1 Java''s Object Type 5.2 Object Methods and Generic Methods 5.3 Generic Classes 5.4 Generic Nodes 5.5 Interfaces and Iterators 5.6 A Generic Bag Class That Implements the Iteraable Interface (Optional Section) 5.7 Introduction to the Java Collection and Map Interfaces (Optional Section) Chapter Summary, Solutions and Projects CHAPTER 6 Stacks 6.1 Introduction to Stacks 6.2 Stack Applications 6.3 Implementations of the Stack ADT 6.4 More Complex Stack Applications Chapter Summary, Solutions and Projects CHAPTER 7 Queues 7.1 Introduction to Queues 7.2 Queue Applications 7.3 Implementations of the Queue ADT 7.4 Priority Queues Chapter Summary, Solutions and Projects CHAPTER 8 Recursive Thinking 8.1 Recursive Methods 8.2 Studies of Recursion: Fractals and Mazes 8.3 Reasoning about Recursion Chapter Summary, Solutions and Projects CHAPTER 9 Trees 9.1 Introduction to Trees 9.2 Tree Representations 9.3 A Class for Binary Tree Nodes 9.4 Tree Traversals 9.5 Binary Search Trees Chapter Summary, Solutions and Projects CHAPTER 10 Tree Projects 10.1 Heaps 10.2 B-Trees 10.3 Java Support for Trees 10.4 Trees, Logs, and Time Analysis Chapter Summary, Solutions and Projects CHAPTER 11 Searching 11.1 Serial Search and Binary Search 11.2 Open-Address Hashing 11.3 Using Java''s Hashtable Class 11.4 Chained Hashing 11.5 Time Analysis of Hashing Chapter Summary, Solutions and Projects CHAPTER 12 Sorting 12.1 Quadratic Sorting Algorithms 12.2 Recursive Sorting Algorithms 12.3 An O (n log n) Algorithm Using a Heap Chapter Summary, Solutions and Projects CHAPTER 13 Software Reuse with Extended Classes 13.1 Extended Classes 13.2 Generic Type Parameters and Inheritance 13.3 Simulation of an Ecosystem 13.3 Abstract Classes and a Game Class Chapter Summary, Further Reading, Solutions and Projects CHAPTER 14 Graphs 14.1 Graph Definitions 14.2 Graph Implementations 14.3 Graph Traversals 14.4 Path Algorithms Chapter Summary, Solutions and Projects APPENDIXES A. Java''s Primitive Types and Arithmetic Overflow B. Java Input and Output C. Throwing and Catching Java Exceptions D. ArrayList, Vector, Hashtable, and HashMap Classes E. A Class for Nodes in a Linked List F. A Class for a Bag of Objects G. Further Big-O Notation H. Javadoc I. Applets for Interactive Testing INDEX