Problem Solving With Data Structures Using Java by Mark Guzdial & Barbara Ericson