I have used this book in my data structures class. It has some good points. It covers each and every data structure in depth and discusses multiple implementations of each of them. It also makes liberal use of diagrams showing what the data structure is supposed to be doing in memory at that time. The problem with it is that it deals with everything very theoretically, often times letting the user puzzle out the implementations themselves. It is overly wordy, the explanations could be cut in half and made much more to the point without loosing anything. I don't know about anyone else but I like to be taught how to do something and then play with it for understanding. I don't like to have the entire theory of what is supposed to happen explained to me in the abstract and then being left to get it or not. Although there are people who learn best this way. If you are one of them then by all means pick up this book. My over all feeling is that it makes you work overly hard to acquire the knowledge that it presents.Contents
Chapter 1 - Preparing for the Journey
Chapter 2 - Linked Data Representations
Chapter 3 - Introduction to Recursion
Chapter 4 - Modularity and Data Abstraction
Chapter 5 - Introduction to Software Engineering Concepts
Chapter 6 - Introduction to Analysis of Algorithms
Chapter 7 - Linear Data Structures - Stacks and Queues
Chapter 8 - Lists, Strings, and Dynamic Memory Allocation
Chapter 9 - Trees
Chapter 10 - Graphs
Chapter 11 - Hashing and the Table ADT
Chapter 12 - External Collections of Data
Chapter 13 - Sorting
Chapter 14 - Advanced Recursion
Chapter 15 - Object-Oriented Programming
Chapter 16 - Advanced Software Engineering
Appendix - Math Reference and Tutorial