This book presents the fundamentals of data structures from an object oriented perspective. The text uses C++, whose classes and object oriented constructs are specifically designed to efficiently implement data structures. The opening chapters introduce the ideas behind OOP and C++ and once the principles are explained, the book develops to deal with data structures and algorithms fom an OO point of view. All the standard data structures are described, including stacks, queues, sets, linked lists, trees and graphs. In addition to the algorithms dealing with these data structures, searching and sorting algorithms are also studied. A non-mathematical approach is adopted for the study of algorithm efficiency. Rather than derive analytic expressions for the number of steps taken by various alorithms, programs are written which count the number of steps and draw graphs of these numbers as functions of the size of the data sets being processed. The Graphs are then transformed to obtain the orders of the algorithms.