preface one of the most important aspects of course in data structures is that it is where students really learn to program using pointers and dynamic memory allocationby implementing data structures such as linked lists and trees its also where students truly learn recursion in our curriculumthis is the first course where students do significant designbecause it often requires real data structures to motivate significant design exercises finallythe fundamental differences between memory-based and disk-based data access cannot be appreciated without practical programming experience for all of these reasonsa data structures course cannot succeed without significant programming component in our departmentthe data structures course is arguably the most difficult programming course in the curriculum students should also work problems to develop their analytical abilities provide over exercises and suggestions for programming projects urge readers to take advantage of them contacting the author and supplementary materialsa book such as this is sure to contain errors and have room for improvement welcome bug reports and constructive criticism can be reached by electronic mail via the internet at shaffer@vt edu alternativelycomments can be mailed to cliff shaffer department of computer science virginia tech blacksburgva set of lecture notes for use in conjunction with this book can be obtained at used in the book are also available at this site online web pages for virginia tech' sophomore-level data structures class can be found at url this book was originally typeset by the author with latex the bibliography was prepared using bibtex the index was prepared using makeindex the figures were mostly drawn with xfig figures and were partially created using mathematica acknowledgmentsit takes lot of help from lot of people to make book wish to acknowledge few of those who helped to make this book possible apologize for the inevitable omissions