This book, which is written by David A. Wyatt and Deryck F. Brown is excellent for explaining some of the more complex aspects of data structures and gives plenty of examples of various different algorithms. It also explains a little bit of history behind some of things that are being explained to you. One example from this book is it's explanations of singly and doubly linked lists. Before I read it I had absolutely no comprehension of them at all. Eventually though I finally managed to understand the concepts.
It's probably more suited to beginners who are teaching themselves and those who are on the first year of some sort of Computer science course at university.