Books to learn data structures and algorithms. They are not all free.
If you don't really understand other books on algorithms, or haven't taken a math course in some time, this illustrated book is a good place to start.
Data Structures and Algorithms in Java (2nd Ed)
An easy to understand and practical data structures and algorithms book without all the hard math. The descriptions of algorithms are very clear, and it has lots of code examples in Java.
This book by Thomas H. Cormen has limited math and explains how algorithms work. It's not long and can help you understand basic algorithms before moving on to the more difficult books.
The Algorithm Design Manual (2nd ed)
Many find this textbook by Steven S. Skiena easier to understand than CLRS.
Algorithms (4th ed)
This textbook by Robert Sedgewick and Kevin Wayne that has lots of examples in Java, and has some mathematical proofs. Many also find this easier to understand than CLRS.
Introduction to Algorithms (3rd ed)
This textbook is known as CLRS (for it's authors Cormen, Leiserson, Rivest, and Stein.) It's an oft-recommended math-heavy rigorous algorithms book.