Data Structures and Algorithms in C++, Second Edition