Data Structures and Program Design (3rd Edition)