Algorithms in C
I like this book a lot. The reason being that it is very practical. Not that the book contains each and every interview questions, but it showcased the inter-play between programming/system design and algorithms. For example, the relations between array and linked list, how sorting algorithms evolved, relations among binary search/radix/red-black trees, etc. For all the interesting problems, the author made it very easy to explain. It is almost like reading a novel, very interesting and enlightening.
Compared to a lot of textbook style algorithm books, this book will give you a lot of insight on basic data structures and sort/search algorithms. It provides you with the background and context on how the algorithms came into being, what problems they were initially designed to solve. After reading this book, you will be equipped with the ability to justify your solution, even in case you don't know the optimum solutions. Most interviewers hate candidates who could only quote an existing algorithm mechanically. They like to see if you could justify the reason why you pick a certain algorithm for the interview problem. So, this book would be perfect for you to prepare for those scenarios.
Last note, this book comes in C++ and Java versions. But the C version is thinner.
Classic programming interview book. I wouldn't recommend you to read it before you read the above algorithms in c book. If Algorithm in C is the foundation, Programming Pearls is the application and tips on top of that.
The book is full of wonderful content. Also make sure that you do the exercises after each chapter. Most exercises have answers at the back of the book and all of them would give you a solid enlightenment comparable to the chapters themselves.
Introduction to Algorithms
This book is recommended by a lot of people. However I think the book focused too much on analysis. If you are researching algorithms, this is a good book for sure. But overall, the book doesn't have a lot of cross-relationship among the chapters. For example, why we need to use red-black tree? What are the benefits? There are a lot of search algorithms, how they come into being? If quick sort is the fastest, why we still need and talk about bubble sort, it sound slike waste right? Questions like these are not answered by the book, which would be much better to get some insight.
So, if you never learned algorithms but need to do a comprehensive review, it is ok to read it. But if you think just by reading this book, you can crack all the interviews at Microsoft/Google/Amazon, you are dead wrong. Most companies don't need you to just "know" these fancy algorithms, but they want to test your understanding on when and where to apply those algorithms, not just for algorithm's sake.
This book lacks the discussion on algorithms from a software engineer's perspective, but instead focused more on math analysis.
Algorithms and Data Structures in C++
This is a pretty generic computer science textbook style book, not much to recommend, but there are a lot of c++ templates inside. Not much analysis either, most are straight coding.
After you've read these books and finished off the exercises, you are ready to roll for actual interviews. Now go ahead and code!