Publisher's Synopsis
New Page 1 The famous mathematician, physicist, theologian, and philosopher Sir Isaac Newton (16421727) once wrote, If I have seen further [than certain other people], it is by standing on the shoulders of giants. This is very true in computer programming as well. Imagine if all programmers had to rediscover for themselves by trial and error how to solve common problems in programming! It is much better to learn the solutions that other programmers have already discovered and build upon that foundation. This book is about those foundational solutions. It describes how to structure data and build algorithms to solve common programming tasks. Some of these techniques have names that come from ordinary non-computer life e.g. stacks, queues and sorting and others have names that might be completely unfamiliar to a new student of programming e.g. recursion, backtracking and arrays but they are all standards in the programmers tool chest. Occasionally, a new tool is discovered or at least, refined and we include one which was just discovered in 1999 introspective sort. But most of them have been part of the standard programmers tool chest for decades. Unlike the majority of textbooks in this field, this book takes a code first approach. After a brief introduction of the concepts, a short complete ANSI-C program is presented for students to analyse. A number of questions arising from the code are then posed and answered in the Socratic format. In this way, we hope that the reader will not only become fluent in the concepts but also in the nuts and bolts of translating these concepts into functioning, efficient standard C code. Variable pointer diagrams are developed and used extensively to aid understanding of the more complex data structures and their manipulation.