Introduction to Algorithms, Second Edition
by Thomas Cormen (Author), Charles Leiserson (Author), Ronald Rivest (Author), Clifford Stein (Author)
The book is a classic text on data structures and algorithms. It covers most of the basic structures and includes extensive analysis of the correctness and complexity issues. Book is made like a textbook and has many exercises. The algorithms are presented in pseudocode only, so you are better to find one more book with implementations in the language you prefer the most. We would recommend the book to anyone, studying data structures and algorithms.

Table of Contents
I. Foundations1. The Role of Algorithms in Computing 2. Getting Started 3. Growth of Functions 4. Recurrences 5. Probabilistic Analysis and Randomized Algorithms II. Sorting and Order Statistics6. Heapsort 7. Quicksort 8. Sorting in Linear Time 9. Medians and Order Statistics III. Data Structures10. Elementary Data Structures 11. Hash Tables 12. Binary Search Trees 13. RedBlack Trees 14. Augmenting Data Structures IV. Advanced Design and Analysis Techniques15. Dynamic Programming 16. Greedy Algorithms 17. Amortized Analysis V. Advanced Data Structures18. BTrees 19. Binomial Heaps 20. Fibonacci Heaps 21. Data Structures for Disjoint Sets VI. Graph Algorithms22. Elementary Graph Algorithms 23. Minimum Spanning Trees 24. SingleSource Shortest Paths 25. AllPairs Shortest Paths 26. Maximum Flow VII. Selected Topics27. Sorting Networks 28. Matrix Operations 29. Linear Programming 30. Polynomials and the FFT (Fast Fourier Transform) 31. NumberTheoretic Algorithms 32. String Matching 33. Computational Geometry 34. NPCompleteness 35. Approximation Algorithms VIII. Appendix: Mathematical BackgroundA. Summations B. Sets, Etc. C. Counting and Probability 