Data Structures and Problem Solving Using Java by Mark A. Weiss