preface related to costs and benefits is the notion of tradeoffs for exampleit is quite common to reduce time requirements at the expense of an increase in space requirementsor vice versa programmers face tradeoff issues regularly in all phases of software design and implementationso the concept must become deeply ingrained programmers should know enough about common practice to avoid reinventing the wheel thusprogrammers need to learn the commonly used data structurestheir related algorithmsand the most frequently encountered design patterns found in programming data structures follow needs programmers must learn to assess application needs firstthen find data structure with matching capabilities to do this requires competence in principles and as have taught data structures through the yearsi have found that design issues have played an ever greater role in my courses this can be traced through the various editions of this textbook by the increasing coverage for design patterns and generic interfaces the first edition had no mention of design patterns the second edition had limited coverage of few example patternsand introduced the dictionary adt and comparator classes with the third editionthere is explicit coverage of some design patterns that are encountered when programming the basic data structures and algorithms covered in the book using the book in classdata structures and algorithms textbooks tend to fall into one of two categoriesteaching texts or encyclopedias books that attempt to do both usually fail at both this book is intended as teaching text believe it is more important for practitioner to understand the principles required to select or design the data structure that will best solve some problem than it is to memorize lot of textbook implementations hencei have designed this as teaching text that covers most standard data structuresbut not all few data structures that are not widely adopted are included to illustrate important principles some relatively new data structures that should become widely used in the future are included within an undergraduate programthis textbook is designed for use in either an advanced lower division (sophomore or junior leveldata structures courseor for senior level algorithms course new material has been added in the third edition to support its use in an algorithms course normallythis text would be used in course beyond the standard freshman level "cs course that often serves as the initial introduction to data structures readers of this book should have programming experiencetypically two semesters or the equivalent of structured programming language such as pascal or cand including at least some exposure to java readers who are already familiar with recursion will have an advantage students of