
Ask HN: What is your favorite data structures book? - jbranchaud
What is your favorite (preferably language-agnostic) data structures book?
======
vram22
For a different but useful approach, one book I liked is:

How to Solve it by Computer - by R. G. Dromey, a lecturer or professor at a
university in Australia, IIRC:

[http://en.wikipedia.org/wiki/How_to_Solve_it_by_Computer](http://en.wikipedia.org/wiki/How_to_Solve_it_by_Computer)

Acording to Wikipedia (and also mentioned in his book, IIRC), Dromey was
inspired by the techniques of the book "How to Solve it" by George Polya, a
famous mathematician, and applied some of his techniques to programming with
data structures and algorithms.

[http://en.wikipedia.org/wiki/George_P%C3%B3lya](http://en.wikipedia.org/wiki/George_P%C3%B3lya)

But he doesn't just translate the Polya book from the domain of mathematics to
software; he builds up the solution to each problem posed in his book, in an
incremental way, sort of as he discovers or invents them, sharing the
reasoning behind the decisions as he goes along. I found this to be one of the
good features of the book.

I had the good fortune to read Polya's book too, early on in college - I think
it was rare even then. It had gems like "solve the more general problem" (if
there is one), which will automatically solve the specific problem you are
working on, as just another special case, and some times the solution to the
more general problem may turn out to be simpler than the solution to the
specific problem. But the book has much more than that, in terms of problem-
solving advice.

~~~
vram22
Interesting, I just looked up the Polya book here:

[http://en.wikipedia.org/wiki/George_P%C3%B3lya](http://en.wikipedia.org/wiki/George_P%C3%B3lya)

and found this:

"In How to Solve It, Pólya provides general heuristics for solving a gamut of
problems, including both mathematical and non-mathematical problems. The book
includes advice for teaching students of mathematics and a mini-encyclopedia
of heuristic terms. It was translated into several languages and has sold over
a million copies. Russian physicist Zhores I. Alfyorov, (Nobel laureate in
2000) praised it, noting that he was a fan. The book is still used in
mathematical education. Douglas Lenat's Automated Mathematician and Eurisko
artificial intelligence programs were inspired by Pólya's work."

------
rubiquity
I like The Algorithm Design Manual[0] by Steve Skiena. He actually discovered
that students fared better with real code (written in C) as opposed to pseudo-
code.

0 - [http://www.algorist.com/](http://www.algorist.com/)

~~~
bzalasky
This book is great, but could be overwhelming depending on how much you
exposure you have to similar material. That said, I wouldn't hesitate to
recommend it. I particularly enjoyed the war stories.

------
sznurek
I would recommend "Purely Functional Data Structures" by Chris Okasaki. It's
not only for functional programmers - there is also a bunch of structures
useful in imperative languages.

------
general_failure
Not a book but Wikipedia is awesome. Just start with a subject and branch
away. No book covers the breadth of Wikipedia. Of course a book might be
better for depth.

~~~
joeclark77
You invite the HN crowd to Wikipedia and the programming language articles
will wind up more controversial and disputed than the politicians'
biographies.

------
deeptruth
My favorite would be "Algorithm Design" by Jon Kleinberg and Eva Tardos. In my
opinion, it is extremely well written and easy to follow.

------
neduma
[http://opendatastructures.org](http://opendatastructures.org) is worth a
look.

------
kjs3
Old school would be Wirth; he's done several data structures books. That's
where a lot of the fundamentals got laid down.

Hard core is Knuths' "The Art of Computer Programming", but tackling it is
somewhat akin to asking how to tell time and being shown, in exquisite (or
excruciating) detail how to build a clock.

I think I learned the most/fastest from Sedgewick (Intro to the Analysis or
Algorithms, Algorithms in C (or C++ or Java)). His style worked for me; YMMV.
The book Rivest, Cormen, et. al wrote (Intro to Algorithms) is also very good,
as is the Aho algorithms book.

