the reason that we are explicit in this requirement is simple--all our implementations are based on an imperative thinking style if you are functional programmer you will need to apply various aspects from the functional paradigm to produce efficient solutions with respect to your functional language whether it be haskellf#ocamletc two of the languages that we have listed (cand javatarget virtual machines which provide various things like security sand boxingand memory management via garbage collection algorithms it is trivial to port our implementations to these languages when porting to +you must remember to use pointers for certain things for examplewhen we describe linked list node as having reference to the next nodethis description is in the context of managed environment in +you should interpret the reference as pointer to the next node and so on for programmers who have fair amount of experience with their respective language these subtleties will present no issuewhich is why we really do emphasise that the reader must be comfortable with at least one imperative language in order to successfully port the pseudoimplementations in this book it is essential that the user is familiar with primitive imperative language constructs before reading this book otherwise you will just get lost some algorithms presented in this book can be confusing to follow even for experienced programmersobject oriented concepts for the most part this book does not use features that are specific to any one language in particularwe never provide data structures or algorithms that work on generic types--this is in order to make the samples as easy to follow as possible howeverto appreciate the designs of our data structures you will need to be familiar with the following object oriented (ooconcepts inheritance encapsulation polymorphism this is especially important if you are planning on looking at the ctarget that we have implemented (more on that in ss which makes extensive use of the oo concepts listed above as final note it is also desirable that the reader is familiar with interfaces as the ctarget uses interfaces throughout the sorting algorithms pseudocode throughout this book we use pseudocode to describe our solutions for the most part interpreting the pseudocode is trivial as it looks very much like more abstract ++or #but there are few things to point out pre-conditions should always be enforced post-conditions represent the result of applying algorithm to data structure