Data Abstraction & Problem Solving with C++: Walls and Mirrors (6th Edition)