Jeff Parker said
Even after taking a mid-level CS course where this book was the required text, this book still sits on my bookshelf at work for reference. Why? Well, certainly it is not the most comprehensive book of data structures in existence, nor is it written with a scholarly tone.
But, that's the point! Michael Main's writing has the air of accessibility that many other CS texts fail to promote. In reading it, you'll feel like a guy that is passionate about this confusing subject is right there helping you out.
I think many reviewers are transferring their frustration about this particular topic to this book. It is not meant to be an authoritative tome about all the nuances of computer science, nor is it even meant to teach you how to program at all. It is meant to convey a deep understanding of what many common data structures are and how they work. In this respect, it is an absolutely wonderful book.
Charlie Johnson said
I am using this book for a introductory course in Data Structures. It wastes far too many pages on specifications of ADT's. There are pages upon pages of data structure specifications, and very little on showing how they can be used in a real program. There are much better books out there. I like Data structures & algorithms by Robert Lafore. Lafore gives example programs that use the data structure being taught. To me, the specifications are utterly useless. I had to buy a supplemental book to finish my course, as my professor was bad, too. Look elsewhere, there are better books.
Robert W. Frost said
For the student seeking to learn data structures, this book certainly covers the basics (sorts, trees, graphs, recursive elements, stacks, queues) well. While some introductory Java is enforced, it assumes a general background in basic Java programming.
Andrew C. Weiss said
The book is not very useful. The author jumps between Java versions but never covers all of the new features Java 5.0 has to offer.
Karl Becker said
Despite having a professor who criticized Main's approach to almost every topic (seemingly in a bid to sell more of her own book), I enjoyed this book and got much use out of it. Other reviewers here claim the example code was buggy: I rarely type in and compile sample code - I never did for this book - so I cannot comment on any errors. However, the author's website has code for almost every class in the book. I highly encourage you to check it out.
I enjoyed his discussion of the topics; he clearly explained the fundamental ideas of the topics covered in the book. One does not need to have example code to write a linked list class if one reads his clear descriptions of it. Same goes for most ideas in the book.
The weak point I thought was sorting, and this was more of a weakness of my own than the author's. Two entire chapters are devoted to searching and sorting, but I just wasn't very interested in it. However, it is a useful concept, and you get much analysis of a few common searching & sorting routines.
The best strategy to use this book is simply to read it straight through. Only quickly scan his code, to get an idea of one way to implement an idea. Read his explanations a few times until you understand the ideas and can state them in your own words. You don't need to be able to memorize Java-specific implementations of ideas from this book. You should, instead, be able to clearly explain in English the abstract ideas that are taught in this text. Recommended both for class and for learning on your own.
Comments