As someone who does not come from a computer science background but works as a software engineer, I've had learning data structures and algorithms on my bucket list for quite some time. Working within the Ruby on Rails and SQL worlds has had me heavily shielded from the ideas and concepts of DS&A. My primary goal was to learn enough to pass the stereotypical Google/Amazon/Microsoft/Yahoo coding exam as well as conduct a similar engineering interview from the opposite end of the table. Since textbooks are my preferred way of learning, I set out in search of the DS&A book that would allow me to reach that goal.Most guru lists will tell you that "Introduction to Algorithms" aka "CLRS" is the book to buy in this field.  I would strongly disagree with this notion unless the reader is already very savvy in DS&A as well as mathematics.  From my experience interviewing dozens of engineers over the last few months, a very small percentage of engineers are actually at that level.  Similar lists recommend Skiena's book as an alternative to CLRS since it is slightly more accessible.  Although I didn't look at Skiena's book as thoroughly as I did CLRS, it didn't seem to be much more beginner friendly.  I initially ended up buying the "DS&A Made Easy" book--the reviews were good, the pages available via Amazon preview looked good, the book focused on DS&A from an interview perspective rather than mathematical proofs, and I also liked the author's stated approach (get something working, even if its terribly inefficient...then work on efficiency).  Then the book came in the mail. After a week of browsing through the text, I actually threw the book in the trash.  The English was bad, the code examples weren't well written, and there was a lot of hand waving where there shouldn't have been.Then I found LaFore.  His writing is extremely clear and never pretentious. The order in which he tackles DS&A topics is much more logical than the other texts I've seen.  The Java code in each of the in-chapter exercises works perfectly.  The charts and drawings are very helpful.  The author knows exactly how far to take the discussion so that the reader is learning a concept thoroughly but not being beaten over the head with it or taken too far down the rabbit hole. I became more comfortable with the Java language itself working through the coding problems in this book than I did using a pure "Learn Java"-type book in the past.  I read this book cover to cover over the course of a few months and can't say enough good things about it.  No longer are DS&A initimidating to me.The chapters are as follows:1 Overview2 Arrays3 Simple Sorting4 Stack and Queues5 Linked Lists6 Recursion7 Advanced Sorting8 Binary Trees9 Red-Black Trees10 2-3-4 Trees11 Hash Tables12 Heaps13 Graphs14 Weighted Graphs15 When to Use WhatFor me, the most difficult subjects by far were recursion and red-black trees.  In fact, unlike any of the other topics listed above, coding a red-black tree is beyond the scope of this book.In summary, this book may be the best technical text I have ever read (and I usually read 3-4 per year).  I've read a handful of technical textbooks that were about simpler topics, were more complex reads, and I would still consider them good to great books.  In fact, LaFore's DS&A book is so exceptional that I even considered buying his 11 year old C++ book to learn C++, even though learning C++ isn't on my bucket list.My recommendation list for DS&A related works is as follows:-If you are a DS&A beginner, choose LaFore's DS&A in Java book (most people fall into this category).-If you are looking for more formal technical interview prep, buy one of Gayle Laakman's books as a companion piece.  Laakman's works typically don't teach you DS&A themselves but prepare you for how you'll typically see them in an interview.-If you are already very strong in DS&A and are looking for something beyond what you'd see in a typical technical interview, look into CLRS, Skiena, Sedgewick (who LaFore strongly recommends for further reading) or if you're really an expert--(gulp) Donald Knuth.