This book provides a modern treatment of data structures and rigorous analyses of their corresponding algorithms. Implementation of these data structures is considered from the perspective of object-oriented programming, and is supported by detailed examples in C++. It features an abstract data type (ADT) framework used consistently throughout the book, treatment of advanced data structures using amortized analysis, use of C++ in a pedagogically sound manner and carefully constructed exercises at the conclusion of each chapter and appendix.