In this book, author Michael Main takes a gentle approach to the data structures course in Java. The text offers an early, self-contained review of object-oriented programming and Java to give students a firm grasp of key concepts, and allows students with a variety of backgrounds to adjust easily. This book offers a flexibility that allows professors such options as emphasizing object-oriented programming, covering recursion and sorting early, or accelerating the pace of the course. MainIs book meets the needs of professors searching for a book to balance the introduction of object-oriented programming and data structures with Java.
Features *Offers a flexible ordering of topics so professors can tailor the book to meet their course needs *Teaches students how to specify, design, implement, and use classes based on the Java Class Libraries *Consistently uses a five-step method for working with data types to ensure students have a thorough knowledge of the subject: understand the data type abstractly, write a specification, use the data type, design and implement the data type, and analyze the implementation *Shows students how to write Java Applets to test newly implemented data structures 0201357445B04062001
Table of Contents:
The Phases of Software Development.
Specification, Design, Implementation.
Running Time Analysis.
Testing and Debugging.
Abstract Data Types and Java Classes.
Classes and Their Members.
Using a Class.
Packages.
Parameters, Equals Methods, and Clones.
Collection Classes.
A Review of Java Arrays.
An ADT for a Bag of Integers.
Programming Project: The Sequence ADT.
Applets for Interactive Testing.
Linked Lists.
Fundamentals of Linked Lists.
Methods for Manipulating Nodes.
Manipulating an Entire Linked List.
The Bag ADT with a Linked List.
Programming Project: The Sequence ADT with a Linked List.
Arrays vs. Linked Lists vs. Doubly Linked Lists.
Java Objects and Iterators.
Java's Object Type.
A Bag of Objects.
JCL Collections and Nodes of Objects.
Iterators.
Stacks.
Introduction to Stacks.
Stack Applications.
Implementations of the Stack ADT.
More Complex Stack Applications.
Queues.
Introduction to Queues.
Queue Applications.
Implementations of the Queue.
ADT.
Priority Queues.
Recursive Thinking.
Recursive Methods.
Studies of Recursion: Fractals and Mazes.
Reasoning about Recursion.
Trees.
Introduction to Trees.
Tree Representations.
A Class for Binary Tree Nodes.
Tree Traversals.
Binary Search Trees.
Tree Projects.
Heaps.
B-Trees.
Trees, Logs, and Time Analysis.
Searching.
Serial Search and Binary Search.
Open-Address Hashing.
Using Java's Hashtable Class.
Chained Hashing.
Time Analysis of Hashing.
Sorting.
Quadratic Sorting Algorithms.
Recursive Sorting Algorithms.
An O(N LOG N) Algorithm Using a Heap.
Software Reuse with Extended Classes.
Extended Classes.
Simulation of an Ecosystem.
Using Extended Classes for ADTs.
Graphs.
Graph Definitions.
Graph Implementations.
Graph Traversals.
Path Algorithms.
Appendices.
Java's Primitive Types and Arithmetic Overflow.
Java Input.
Throwing and Catching Java Exceptions.
Java's Vector and Hashtable.
A Class for Nodes in a Linked List.
A Class for a Bag of Objects.
Further Big-O Notation.
Javadoc. 0201357445T04062001