Data Abstraction & Problem Solving with C++ Walls and Mirrors 7th Edition by Frank Carrano