C++ Data Structures: a Laboratory Course by Jonathan Geisler, Stefan Brandle,… A nice touch in this revised textbook is the clearer heading hierarchy.