I loved the Head First series book on object oriented design. It was a very gentle and funny introduction to the subject. I am currently taking a data structures class and find the text we are using (Kruse/Ryba Data Structures and Program Design in C++) to be very dry and hard to comprehend. This is mostly due I think to my own limitations in the area of Mathematics.
Does anyone know of a Data Structures text that is written in a lighter style, with a sense of humor, that still covers all the basics like Binary Trees, B Trees, and Graphs?
The Algorithm Design Manual by Steve Skiena isn't exactly a barrel of laughs, but it's relatively light on the deeper mathematics and contains lots of what he calls "War Stories", which are illustrative examples from real world situations where algorithm work really paid off (or, sometimes, totally failed). He's also got his audio and video lectures online, and he's got a nice lecture style with bits of humor interspersed, so it might be what you are looking for.
This too is not light either but it is pretty decent
Algorithms and data structures by Robert Lafore
There is nothing more readable and meaningful, in my opinion than http://www.amazon.com/Bundle-Algorithms-Parts-1-5-Fundamentals/dp/020172684X
It's 2 books, part 5 being graphs and is not as useful as the other book - unless of course, you want to use graphs to solve a problem. :)
How to Solve it By Computer by Dromey though not exactly an algorithms book takes the approach of re-discovering the process by which many data-structures and algorithms were arrived at over the years. This allows us to understand the flow of thought behind the code and some of the forces at work.
Related: This book follows in the foot-steps of another great book: How to Solve It by G. Polya which talks about how great mathematicians go about the problem-solving process.
I'm currently using Larry Nyhoff's ADTs, Data Structures, and Problem Solving with C++.
It's not as light or enjoyable to read as a Head First series book, but it's really well detailed on binary trees, b trees, and graphs. Its code samples have been really helpful for completing my assignments. No higher math knowledge is required to understand the text (except, of course, on the chapter dedicated to algorithm analysis).
Beginning Algorithms by Harris and Ross (a Wrox Press book) was one I liked, although its examples are presented in Java, not C++. Might be a nice accompaniment to the text you're trudging through in class.
I've heard good things about "Introduction to algorithms, A creative approach - Udi Manber"
I can't verify it though since it's not available locally :(
http://www.amazon.com/Introduction-Algorithms-Creative-Udi-Manber/dp/0201120372