Data structures and algorithms with object-oriented design patterns in C++ - Bruno R. Preiss (New Jersey : John Wiley & Sons, 1999)