C++ Data Structures from Scratch