Full description not available
M**O
Great introduction
After some thought, I decided to change the rating of the book from 5 stars to 4.First, the good:The book is fairly well contained, and offers a complete introduction to data structures. The first two chapters review struct declarations and pointers in C. The rest of the book covers linked lists, stacks, queues, hash tables, matrices, trees, graphs, and sorting. The book is well written, and the chapters are very well organized. As with every technical subject, rereading a section once or twice will probably be necessary. But once it sinks in, it is a fantastic feeling! I think that the problems at the end of the chapter are extremely valuable. Some problems are simple drills, but others will require you to apply what you learned to solve real life problems. Some require you to come up with your own algorithms. In one problem, the author guides the reader toward making a "big number" library that can handle arbitrarily large integers. I found this problem particularly enlightening, and I felt very accomplished upon its completion.Now, for the bad:In my opinion, the author's coding style is a little sloppy. My biggest issue is that he doesn't emphasize the release of dynamically allocated memory. For example, in chapter 4, he includes the complete code needed to implement a stack data structure. However, he doesn't mention anything about creating a function that will release the dynamic memory. This occurs consistently in chapter 5, too. This book is meant to appeal to beginners, and beginners are especially likely to create memory leaks. The author should have addressed this issue.Secondly, a lot of the book's source code assumes that arrays start out with an index of 1. In C, of course, all array elements start with 0. While not technically wrong, it makes the whole story more complicated. Having to switch back and forth between the book's convention and that which C expects makes "off by 1" errors very likely.In addition, the author declares functions within other functions, and even defines functions in header .h files. While there is technically nothing wrong with either, it represents bad coding practice. The book is geared toward beginning programmers, and such a coding style sets a bad example.If the author fixes these small problems, then it will make the book perfect. Even with these small issues, I highly recommend you get this book if you want a light but complete introduction to data structures.
H**T
Make everything as simple as possible, but not simpler
The only way for me to describe Professor Kalicharan's style of writing and teaching is the following quote attributed to Albert Einstein: "Make everything as simple as possible, but not simpler". Simplicity and (crystal) clarity are his trademark. He just wants you to understand. But he won't dumb down the subject, nor he will get over wordy. He will just use the right explanation, the one that you will remember, and he will describe every step for you so you don't get lost. He will point out what's important; he will make you understand.The book is only 300 pages long but after reading it you will be able to pick up any other book on data structures (whatever the programming language used) and say "The explanation was clearer in Professor Kalicharan's book".The code is simple and clear, you can actually remember it, think about it and play with it - things you can't do with a Data Structures book using OOP where the implementation of the simplest data structure takes at least two pages. Who needs OOP to learn about linked lists, trees or graph? In my opinion OOP takes the fun out learning Data Structures. In this book you will find:StructuresPointersLinked listsStacks and queuesBinary treesSorting (selection sort, insertion sort, heapsort, quicksort, mergesort, Shell sort)GraphsHashingWorking with matricesTo really understand data structures you need to play with them, and to do so all you need is main() and a few others functions. All of them will happily stand in only one file. To understand data structures, to play with them you don't even need to bother yourself with "modular programming" even though the programs in the book are written using modular programming concepts.If you want to write bigger software, which is entirely another story, you will need to learn more about modularity, OOP, etc. This book is not about software engineering. It is about helping you to understand Data Structures and, for me, it is simply the best book for doing that.
TrustPilot
4天前
2 周前