Mastering Algorithms with C by Kyle Loudon The following corrections were made to the 11/03 reprint: Here's a key to the markup: [page-number]: serious technical mistake {page-number}: minor technical mistake : important language/formatting problem (page-number): language change or minor formatting problem (27) The sentence: Think of the fragile leaf of a fern...smaller copy of the overall leaf; or the repeating patterns in a reflection... NOW READS: Think of the fragile leaf of a fern...smaller copy of the overall leaf. Think of the repeating patterns in a reflection... [36] answer to first question Previously read "... the frame pointer, keeps track of the top of the stack as a program exicutes. It is also used to determine when the stack has grown too large. An interrupt is raised to signal the error. NOW READS: " ... the frame pointer addresses the top frame on the stack. It's the stack pointer that points to the actual top of the stack (that is, the point where the next stack frame will be pushed). Therefore, although a system could use the frame pointer to determine stack overflow, it probably is the stack pointer that would normally be used." (52) first words under "Description of Linked Lists:" "Singly-linked lists..." wrongly HAD an extra space and an "s" in italics. This has been corrected. {91} At the top of the page, the lines: old_element = element->next; element->next = element->next->next; ARE NOW FOLLOWED by the two additional lines: if (old_element == clist_head(list)) list->head = old_element->next; {146-147} All occurrences of "int" in the implementation of hashpjw HAVE BEEN CHANGED to "unsigned int". (205) Under the section "bitree_remove", "Furthermore," HAS BEEN DELETED from the second-to-last sentence. {290} There is an erroneous comma in the middle of the return statement. {327} If the allocation of storage for the sorted elements fails, we should free the storage just allocated for the counts before returning. Thus, the lines: if ((temp = (int *)malloc(size * sizeof(int))) == NULL) return -1; should read: if ((temp = (int *)malloc(size * sizeof(int))) == NULL) { free(counts); return -1; }