If you find further errors, please drop me a line by email.
I enjoy corresponding with readers!
--Michael Main (email@example.com)
Page 210: This figure is file node1.h (not node1.cxx). Page 266: Figure 5.17 has several spots where "node" should be "dnode", and a missing semi-colon after the last statement of the constructor. Page 269: Project 14: Omitting the precursor causes other problems too (such as deleting the tail node). Page 359: Some compilers do not implement the Koenig lookup. Therefore, in stack2 (pages 360-262) and queue2 (pages 406-409), it might be better to go ahead and use the scope resolution operator main_savitch_6B:: with each list function (such as main_savitch_6B::list_clear). Page 370: The second else-if in Figure 7.12 should be written as a loop: while (none of the three conditions are true) print the top operation and pop it. Page 373: Answer 13 should refer to Figure 7.10 on page 365. Answer 14 should refer to Figure 7.13 on page 371. Pages 403 and 409: The name of the queue class is queue (not Queue). Also, on page 403 the pop function is void (it does not return an item). Page 434: The end of the function call should have only two recursive calls. (The first of these calls was accidentally repeated twice.) Page 464-465: Please see www.cs.colorado.edu/~main/supplements/binary_tree_node.html. Page 494 and 496: The node_ptr parameter of the print function should be const. Page 503: The highlighted line should be: root_ptr = new binary_tree_node
- (entry) Page 585: In general, the return value from hash2 could be as large as data.length-1, but Knuth's particular hash2 will never exceed data.length-2. Page 651: The figure referred to in the last paragraph should be 14,3.