views:

683

answers:

11

Can you recommend me a book or (better!) a site with many hard problems and exercises about data structures?

I'm already answering project Euler questions, but these questions are about interesting, but uncommon algorithms. I hardly used even a simple tree. Maybe there is a site with exercises like: hey, you need to calculate this: ... . Do it using a tree. Now do it using a zipper. Upload your C (Haskell, Lisp, even Pascal or Fortress go) solution. Oh, your solution is so slow!

Self-education is very hard then you trying to learn very common, fundamental things. How can I help myself with them without attending to courses or whatever?

+1  A: 

Hi, there! you can try this one : usaco

Alexander Vakrilov
these are olympiad questions, aren't them? I've solved many of these, but I don't think they can teach me fundamentals
valya
A: 

A good text book with exercises at the end seems like the best way to go.

Pranav
can you name one? :)
valya
I have used CLRS and skiena's 'Algorithm design manual'.
Pranav
+4  A: 

Video lectures by National Programme on Technology Enhanced Learning(NPTel) at NPTEL Youtube channel. These are being carried out by seven IITs and IISc Bangalore of India and funded by MHRD, Govt of India.

Many more engineering lectures.

Ankit Jain
Oh great thank you!!! Are there any exercises for these lectures?
valya
+8  A: 

Introduction to Algorithms, Third Edition, by Cormen, Leiserson, Rivest and Stein is a good intro to algorithms and data structures. It has many exercises at the end of each chapter. most of them are simple, but there are some more difficult.

Ofri Raviv
oh, thanks! I've even found this course in iTunes U :)
valya
The classic! Knuth's books are also good, but I tend to find CLRS less verbose and more in-depth in some places.
San Jacinto
+2  A: 

This has to be a duplicate.

I'd recommend the MIT open courseware site here. There's algorithms courses in the "Electrical Engineering and Computer Science" section some way down the page.

6.006 - Introduction to Algorithms
6.046J - Introduction to Algorithms (SMA 5503)

I recommend the latter. The materials are on the site. The videos are probably best accessed from YouTube here - search for "mit algorithms". The textbook is well respected. Third edition is just out, second edition matches the course. The first edition was also included as part of Dr Dobbs Algorithms and Data Structures CD ROM.

Niklaus Wirth has an Algorithms and Data Structures book available for download from his personal site. I have the Modula 2 print version, and while it's not a a substitute for Cormen (or aho hopcroft ullman, etc) it's a nice book to have.

Steve314
+2  A: 

Apart from the aforementioned Cormen, Leiserson and Rivest, there is also a very new book by Peter Brass, "Advanced Data Structures". It has relatively ugly example code in C, and the author is somewhat fanatic about performance (for example, he doesn't use recursion), but the theoretical content of that book is brilliant and unique, it hardly intersects with Cormen. I expect it to become a classic.

jkff
thanks! very interesting
valya
A: 

Additional to the really good text book Introduction to Algorithms, Third Edition, by Cormen, Leiserson, Rivest and Stein, I would highly recommend to watch the online available videos of lectures given by Leiserson at MIT. If you have the book and the lectures, it is like you were studying at the MIT ;-)

http://videolectures.net/mit6046jf05_introduction_algorithms/

Nils Schmidt
+1  A: 

Awesome free eBook — «Data Structures and Algorithms». Contains implementation of the common algorithms in pseudocode and in an explicit form. Besides, quite nice and intelligible schemes and graphics.

Even Jon Skeet mentioned that in his blog. :-)

In addition, this is less than 100 pages book (as you may know, lots of programmers don't read some books).

Bar
A: 

I found this website is useful in understanding the datastructure and algorithms http://www.visual-algorithms.com

Alex
A: 

If you want to practice, you can have a look at http://www.topcoder.com, they propose alorithm challenges.

thibr
A: 

If you want an enlightening alternative for learning algorithms you can always try: Rabhi F., Lapalme G. Algorithms.. a functional programming approach.

The authors challenge more traditional methods of teaching algorithms by using a functional programming context, with Haskell as the implementation language. This leads to smaller, clearer and more elegant programs which enable the programmer to understand the algorithm itself more quickly and to use that understanding to explore alternative solutions. Placing the emphasis on program development rather than the mathematical properties of algorithms, the book uses a succession of practical programming examples to develop in the reader problem-solving skills which can be easily transferred to other language paradigms.to other language paradigms.

As for a site with (hard) exercises you can always try to solve, I recommend: spoj .

Andrei Ciobanu