1 Object-Oriented Programming Using Java
1.1 Rudimentary Java
1.2 Object-Oriented Porgramming in Java
1.3 Imput and Output
1.4 Java and Pointers
1.5 Vectors in java.util
1.6 Data Structures and Object-Oriented Programming
1.7 Case Study:Random Access File
1.8 Exercises
1.9 Programming Assignments
Bibliography
2 Complexity Analysis
2.1 Computational and Asymptotic Complexity
2.2 Big-O Notation
2.3 Properties of Big-O Notation
2.4 ΩandΘNotations
2.5 Possible Problems
2.6 Examples of Complexities
2.7 Finding Asymptotic Complexity:Examples
2.8 The Best,Average,and Worst Cases
2.9 Amortized Complexity
2.10 NP-Completeness
2.11 Exercises
Bibliography
3 LINKED LISTS
3.1 Singly Linked Lists
3.2 Doubly Linked Lists
3.3 Circular Lists
3.4 Skip Lists
3.5 Self-Organizing lists
3.6 Sparse Tables
3.7 Lists in java.util
3.8 Concluding Remarks
3.9 Case Study:A Library
3.10 Exercises
3.11 Programming Assignments
Bibliography
4 STACKS AND QUEUES
4.1 Stacks
4.2 Queues
4.3 Priority Queues
4.4 Case Study:Exiting a Maze
4.5 Exercises
4.6 Programming Assignments
Bibliography
5 RECURSION
5.1 Recursive Definitions
5.2 Method Calls and Recursion Implementation
5.3 Anatomy of a Recursive Call
5.4 Tail Recursion
5.5 Nontail Recursion
5.6 Indirect Recursion
5.7 Nested Recursion
5.8 Excessive Recursion
5.9 Backtracking
5.10 Concluding Remarks
5.11 Case Study:A Recursive Descent Interpreter
5.12 Exercises
5.13 Programming Assignments
Bibliography
6 BINARY TREES
6.1 Trees,Binary Trees,and Binary Search Trees
6.2 Implementing Binary Trees
6.3 Searching a Binary Search Tree
6.4 Tree Traversal
6.5 Insertion
6.6 Deletion
6.7 Balancing a Tree
6.8 Self-Adjusting Trees
6.9 Heaps
6.10 Polish Notation and Expression Trees
6.11 Case Study:Computing Word Frequencies
6.12 Exercises
6.13 Programming Assignments
Bibliography
7 MULTIWAY TREES
7.1 The Family of B-Trees
7.2 Tries
7.3 Concluding Remarks
7.4 Case Study:Spell Checker
7.5 Exercises
7.6 Programming Assignments
Bibliography
8 GRAPHS
8.1 Graph Representation
8.2 Graph Traversals
8.3 Shortest Paths
8.4 Cycle Detection
8.5 Spanning Trees
8.6 Connectivity
8.7 Topological sort
8.8 Netwoks
8.9 Matching
8.10 Eulerian and Hamiltonian Graphs
8.11 Graph Coloring
8.12 NP-Complete Problems in Graph Theory
8.13 Case Study:Distinct Rpresentatives
8.14 Exercises
8.15 Programming Assignments
Bibliography
9 SORTING
9.1 Elementary Sorting Algorithms
9.2 Decision Trees
9.3 Efficient Sorting Algorithms
9.4 Sorting in java.util
9.5 Concluding Remarks
9.6 Case Study:Adding Polynomials
9.7 Exercises
9.8 Programming Assignments
Bibliography
10 HASHING
10.1 Hash Functions
10.2 Collision Resolution
10.3 Deletion
10.4 Perfect Hash Functions
10.5 Hash Functions for Extendible Files
10.6 Hashing in java.util
10.7 Case study:Hashing with Buckets
10.8 Exercises
10.9 Programming Assignments
Bibliography
11 DATA COMPRESSION
11.1 Conditions for Data Compression
11.2 Huffman Coding
11.3 Run-Length Encoding
11.4 Ziv-Lempel Code
11.5 Case Study:Huffman Method with Run-Length Encoding
11.6 Exercises
11.7 Programming Assignments
Bibliography
12 MEMORY MANAGEMENT
12.1 The Sequential-Fit Methods
12.2 The Nonsequential-Fit Methods
12.3 Garbage Collection
12.4 Concluding Remarks
12.5 Case Study:An In-Place Garbage Collector
12.6 Exercises
12.7 Programming Assignments
Bibliography
13 STRING MATCHING
13.1 Exact String Matching
13.2 Approximate String Matching
13.3 Case Study:Longest Common Substring
13.4 Exercises
13.5 Programming Assignments
Bibliography
APPENDIXES
A Computing Big-O
B NP-Completeness
Name Index
Subject Index