| |
| |
Preface | |
| |
| |
| |
Foundations | |
| |
| |
Introduction | |
| |
| |
| |
Software Engineering | |
| |
| |
Software Development | |
| |
| |
Software Quality | |
| |
| |
Software Life Cycle Models | |
| |
| |
The Unified Modeling Language (UML) | |
| |
| |
Error Handling | |
| |
| |
Analysis of Algorithms | |
| |
| |
Software Engineering and Data Structures | |
| |
| |
| |
Collections | |
| |
| |
Collections | |
| |
| |
A Bag Collection | |
| |
| |
Using a Bag: Bingo | |
| |
| |
Implementing a Bag: with Arrays | |
| |
| |
Analysis of the Array Implementation of a Bag | |
| |
| |
| |
Linked Structures | |
| |
| |
References as Links | |
| |
| |
Managing Linked Lists | |
| |
| |
Elements without Links | |
| |
| |
Implementing a Bag: with Links | |
| |
| |
Analysis of the Linked Implementation of a Bag | |
| |
| |
| |
Recursion | |
| |
| |
Recursive Thinking | |
| |
| |
Recursive Programming | |
| |
| |
Using Recursion | |
| |
| |
Analyzing Recursive Algorithms | |
| |
| |
| |
Sorting and Searching | |
| |
| |
Searching | |
| |
| |
Linear Search | |
| |
| |
Binary Search | |
| |
| |
Comparing Search Algorithms | |
| |
| |
Sorting | |
| |
| |
Selection Sort | |
| |
| |
Insertion Sort | |
| |
| |
Bubble Sort | |
| |
| |
Quick Sort | |
| |
| |
Merge Sort | |
| |
| |
| |
Linear Data Structures | |
| |
| |
Introduction | |
| |
| |
| |
Stacks | |
| |
| |
A Stack ADT | |
| |
| |
Using Stacks: Evaluating Postfix Expressions | |
| |
| |
Using Stacks: Simulating Recursion | |
| |
| |
Implementing Stacks: with Links | |
| |
| |
Implementing Stacks: with Arrays | |
| |
| |
Implementing Stacks: the java.util.Stack Class | |
| |
| |
Analysis of Stack Implementations | |
| |
| |
| |
Queues | |
| |
| |
A Queue ADT | |
| |
| |
Using Queues: Code Keys | |
| |
| |
Using Queues: Ticket Counter Simulation | |
| |
| |
Using Queues: Radix Sort | |
| |
| |
Implementing Queues: with Links | |
| |
| |
Implementing Queues: with Arrays | |
| |
| |
Implementing Queues: with Circular Arrays | |
| |
| |
Analysis of Queue Implementations | |
| |
| |
| |
Lists | |
| |
| |
A List ADT | |
| |
| |
Using Ordered Lists: Tournament Maker | |
| |
| |
Using Indexed Lists: The Josephus Problem | |
| |
| |
Implementing Lists: with Arrays | |
| |
| |
Implementing Lists: with Links | |
| |
| |
Analysis of List Implementations | |
| |
| |
| |
Non-Linear Data Structures | |
| |
| |
| |
Trees | |
| |
| |
Trees | |
| |
| |
Definitions | |
| |
| |
Strategies for Implementing Trees | |
| |
| |
Tree Traversals | |
| |
| |
Implementing Binary Trees | |
| |
| |
Using Binary Trees: Expression Trees | |
| |
| |
| |
Binary Search Trees | |
| |
| |
A Binary Search Tree | |
| |
| |
Implementing Binary Search Trees: with Links | |
| |
| |
Using Binary Search Trees: Implementing Ordered Lists | |
| |
| |
Balanced Binary Search Trees | |
| |
| |
Implementing Binary Search Trees: AVL Trees | |
| |
| |
Implementing Binary Search Trees: Red/Black Trees | |
| |
| |
Implementing Binary Search Trees: The Java Collections API | |
| |
| |
| |
Heaps | |
| |
| |
A Heap | |
| |
| |
Using Heaps: Heap Sort | |
| |
| |
Using Heaps: Priority Queues | |
| |
| |
Implementing Heaps: with Links | |
| |
| |
Implementing Heaps: with Arrays | |
| |
| |
Analysis of Heap Implementations | |
| |
| |
| |
Multi-way Search Trees | |
| |
| |
2-3 Trees | |
| |
| |
2-4 Trees | |
| |
| |
B-Trees | |
| |
| |
| |
Hashing | |
| |
| |
A Hashing | |
| |
| |
Hashing Functions | |
| |
| |
Resolving Collisions | |
| |
| |
Deleting Elements from a Hash Table | |
| |
| |
Hash Tables in the Java Collections API | |
| |
| |
| |
Graphs | |
| |
| |
Undirected Graphs | |
| |
| |
Directed Graphs | |
| |
| |
Networks | |
| |
| |
Common Graph Algorithms | |
| |
| |
Appendices | |
| |
| |
Java Overview | |
| |
| |
Introduction to GUIs in Java | |
| |
| |
Java Class Descriptions | |