tips for working through the examples as with most books you get out what you put in and so we recommend that in order to get the most out of this book you work through each algorithm with pen and paper to track things like variable namesrecursive calls etc the best way to work through algorithms is to set up tableand in that table give each variable its own column and continuously update these columns this will help you keep track of and visualise the mutations that are occurring throughout the algorithm often while working through algorithms in such way you can intuitively map relationships between data structures rather than trying to work out few values on paper and the rest in your head we suggest you put everything on paper irrespective of how trivial some variables and calculations may be so that you always have point of reference when dealing with recursive algorithm traces we recommend you do the same as the abovebut also have table that records function calls and who they return to this approach is far cleaner way than drawing out an elaborate map of function calls with arrows to one anotherwhich gets large quickly and simply makes things more complex to follow track everything in simple and systematic way to make your time studying the implementations far easier book outline we have split this book into two partspart provides discussion and pseudo-implementations of common and uncommon data structuresand part provides algorithms of varying purposes from sorting to string operations the reader doesn' have to read the book sequentially from beginning to end can be read independently from one another we suggest that in part you read each in its entiretybut in part you can get away with just reading the section of that describes the algorithm you are interested in each of the on data structures present initially the algorithms concerned with insertion deletion searching the previous list represents what we believe in the vast majority of cases to be the most important for each respective data structure for all readers we recommend that before looking at any algorithm you quickly look at appendix which contains table listing the various symbols used within our algorithms and their meaning one keyword that we would like to point out here is yield you can think of yield in the same light as return the return keyword causes the method to exit and returns control to the callerwhereas yield returns each value to the caller with yield control only returns to the caller when all values to return to the caller have been exhausted