Prentice Hall, 2010. – 620 p. – 3rd ed. – ISBN: 0136609112, 9780136609117
This book is intended as a teaching text. I believe it is more important for a practitioner to understand the principles required to select or design the data structure that will best solve some problem than it is to memorize a lot of textbook implementations. Hence, I have designed this as a teaching text that covers most standard data structures, but not all. A 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 program, this textbook is designed for use in either an advanced lower division (sophomore or junior level) data structures course, or for a senior level algorithms course. New material has been added in the third edition to support its use in an algorithms course. Normally, this text would be used in a course beyond the standard freshman level "CS2" course that often serves as the initial introduction to data structures. Readers of this book should have programming experience, typically two semesters or the equivalent of a structured programming language such as Pascal or C, and including at least some exposure to Java. Readers who are already familiar with recursion will have an advantage. Students of data structures will also benefit from having first completed a good course in Discrete Mathematics.
PreliminariesData Structures and Algorithms
Mathematical Preliminaries
Algorithm Analysis
Fundamental Data StructuresLists, Stacks, and Queues
Binary Trees
Non-Binary Trees
Sorting and SearchingInternal Sorting
File Processing and External Sorting
Searching
Indexing
Advanced Data StructuresGraphs
Lists and Arrays Revisited
Advanced Tree Structures
Theory of AlgorithmsAnalysis Techniques
Lower Bounds
Patterns of Algorithms
Limits to Computation