Walls and Mirrors: C++ (3rd ed) Errata Walls and Mirrors: C++ (3rd ed) Errata
Last updated on May 5, 2004



=========================================================================
Table of Contents

Page xiii

Part II is listed as beginning on page 249 - it begins on 271.

===========================================================================
Chapter 1
---------------------------------------------------------------------------

Page 8, Line 8

Change math.h to cmath

---------------------------------------------------------------------------

Page 48, Exercise 3

Replace

#include <iostream.h>

with

#include <iostream>
using namespace std;

---------------------------------------------------------------------------

Page 49, Exercise 8

Replace

#include <iostream.h>

with

#include <iostream>
using namespace std;

===========================================================================
Chapter 2
---------------------------------------------------------------------------

Page 63 bottom of page just above last row of boxes

add "of" before "fact"

---------------------------------------------------------------------------
Page 105, Exercises 8 and 9:
In the include statements, replace iostream.h with iostream

---------------------------------------------------------------------------
Page 106, Exercise 11:
In the include statement, replace iostream.h with iostream

===========================================================================
Chapter 3
---------------------------------------------------------------------------

Page 140 middle of page

1. In the include statement, replace iostream.h with iostream

2. Change 5.0 to 5.1 in:

Sphere mySphere(5.1); // radius is 5.0

to

Sphere mySphere(5.1); // radius is 5.1

---------------------------------------------------------------------------
Page 141 middle just before private

change

Color getColor();

to

Color getColor() const;

[note that const is BOLD]
---------------------------------------------------------------------------
Page 142 code before first paragraph

change

Color ColoredSphere::getColor()

to

Color ColoredSphere::getColor() const

[note that const is BOLD]
---------------------------------------------------------------------------
Page 153

Our definition of ListException is derived from exception. Some compilers do
not provide a constructor for exception that has a string argument. In such cases,
you can replace exception with another class derived from exception that does
provide a constructor with a string argument. For example, you could use runtime_error
or logic_error.

---------------------------------------------------------------------------
Page 154

Some compilers insist that a function definition contain a "throw" clause if the
function's prototype has one. If you encounter this error, simply add this clause
to the function definition.

=========================================================================
Chapter 4
---------------------------------------------------------------------------
Page 172, 3rd paragraph

Replace the first sentence with

You also can use a pointer offset notation to reference any array element.

Replace the sentence in parentheses with

This notation uses pointer arithmetic.
---------------------------------------------------------------------------
Page 177 2nd paragraph, Line 4

Change *Node to Node*

---------------------------------------------------------------------------
Page 186 2nd sentence of 2nd full paragraph

Change

"Note that we declare a node for the linked list here, but we hide its definition in the implementation file."

to

"Note that you define the node for the linked list in the private section of the class."

---------------------------------------------------------------------------
Page 188, Line 4

Change

List yourList = myList;

to

List yourList(myList);

---------------------------------------------------------------------------
Page 203

change (at the first bold void)

void linkedListInsert(Node *& headPtr,
ItemType newItem)

to

void linkedListInsert(Node *& headPtr,
ListItemType newItem)

---------------------------------------------------------------------------
Page 203

change != to == in 2nd 'if':

if (newPtr != NULL)

to

if (newPtr == NULL)


---------------------------------------------------------------------------
Page 223 at bottom

change order of

apples
bread
juice

to

juice
bread
apples

===========================================================================
Chapter 5

---------------------------------------------------------------------------
page 240 - 241

displayBoard(), isUnderAttack(), and index() should be const methods


---------------------------------------------------------------------------
page 250

In first line above last paragraph:

change case in

< identifier > = A | B | ... | Z

to

< identifier > = a | b | ... | z
---------------------------------------------------------------------------
page 250

change last word in 5th line from bottom:

uppercase

to

lowercase


---------------------------------------------------------------------------
page 251

Replace 4th line from bottom with

+endPre(in first: integer): integer

---------------------------------------------------------------------------
page 252

In 7th line of code above text:

change

if (firstEnd > 0)

to

if (firstEnd > -1)

---------------------------------------------------------------------------
page 255

In the first line

change

evaluatePrefix(in

to

evaluatePrefix(inout


In middle of page, sentence before heading "Postfix expressions"

change

value parameter

to

reference parameter

and

not saved

to

saved


In middle of page, 5th line after heading "Postfix expressions"

change case in

< identifier > = A | B | ... | Z

to

< identifier > = a | b | ... | z

---------------------------------------------------------------------------
page 256

In sentence before pseudocode for convert

change

value parameter

to

reference parameter


In next line

change

convert(in

to

convert(inout

---------------------------------------------------------------------------
page 257

In 9th line from top

change case in

< identifier > = A | B | ... | Z

to

< identifier > = a | b | ... | z

---------------------------------------------------------------------------
page 269

In 6th line from bottom

change case in

< letter > = A | B | ... | Z

to

< letter > = a | b | ... | z

===========================================================================
Chapter 6

---------------------------------------------------------------------------

Page 275, 3 lines above Key concepts

Change "is it" to "it is"

---------------------------------------------------------------------------

Page 312 bottom

Insert "if (!aStack.isEmpty())" before the last line (the call to getTop)

===========================================================================
Chapter 7
---------------------------------------------------------------------------
Page 334

Figure 7-2:
The contents of the queue after the first dequeue operation is 2 7
The contents of the queue after the second dequeue operation is 7

---------------------------------------------------------------------------
Page 335

Add a close brace to the "if (queueFront equals stackTop)" clause
near the bottom of the page.

---------------------------------------------------------------------------
Page 340

Change the order of the following declarations in lines 5 & 6

QueueNode *frontPtr;
QueueNode *backPtr;

to

QueueNode *backPtr;
QueueNode *frontPtr;

to match the order of the initializers in the default constructor.

---------------------------------------------------------------------------
Page 341
add the next line at top of page, then skip a line. Align it with the slashes at the top of 341.
newPtr->next = NULL;

---------------------------------------------------------------------------
Page 341

Change original line 7
newPtr->next = backPtr;

to

backPtr->next = newPtr;

---------------------------------------------------------------------------
Page 350

Change L to aList 2x in Line 5:

Queue::Queue(const Queue& Q): L(Q.L)

to

Queue::Queue(const Queue& Q): aList(Q.aList)

---------------------------------------------------------------------------
Page 351

In the method getFront, remove the ! from the "if" statement so that it reads

if (aList.isEmpty())

========================================================================
Chapter 8
---------------------------------------------------------------------------

Page 378, 3rd line from bottom

Insert & after "string"

---------------------------------------------------------------------------

Page 379

Insert & after "string" in the methods getName, setName, and resetBall

---------------------------------------------------------------------------

Page 380

Insert & after "string" in the constructor and the methods getName, setName, and resetBall

---------------------------------------------------------------------------

Page 415

The declaration of count should be just before the for statement, not within it.

---------------------------------------------------------------------------

Page 430, Problem 12.

In the last two paragraphs, change "Programing" to "Programming"

===========================================================================
Chapter 9
---------------------------------------------------------------------------
Page 456

Change in Line 6 of first paragraph:

Figure 9-9 (page 460)

to

Figure 9-9 (page 458)

---------------------------------------------------------------------------
Page 479

Exercise 16: The two calls to "mystery" should be in lowercase

===========================================================================
Chapter 10
---------------------------------------------------------------------------
Page 485, first line

Change "valued-oriented" to "value-oriented"
---------------------------------------------------------------------------
Page 495, Figure 10-9

Add the method attachLeft() to the UML diagram, just before attachRight()
---------------------------------------------------------------------------
Page 499

Missing semicolon after 7th line from bottom:

int left, int right);

---------------------------------------------------------------------------
Page 501 Figure 10-11

The brace for the free list should extend up one more item (to item 6)
---------------------------------------------------------------------------
Page 541

Delete semicolon at end of Line 8:

void deleteItem(TreeNode * &treePtr, KeyType searchKey)
throw (TreeException);

---------------------------------------------------------------------------
Page 566, Problem 5

In the description of "Quit", change "address book" to "phone book"

===========================================================================
Chapter 11
---------------------------------------------------------------------------
Page 612

Self-Test Exercise #4 should refer to Figure 11-11, not 11-10.

===========================================================================
Chapter 12
---------------------------------------------------------------------------
Page 669

change ptrType to ChainNode * in Line 13:

typedef ptrType HashTableType[HASH_TABLE_SIZE];

to

typedef ChainNode * HashTableType[HASH_TABLE_SIZE];

---------------------------------------------------------------------------

========================================================================
Chapter 13
---------------------------------------------------------------------------

Page 705, 4th line after "Spanning Trees" heading

Change "hierarchal" to "hierarchical"
---------------------------------------------------------------------------

Page 718, last paragraph

Change

Finding an Euler circuit is like drawing each of the diagrams in Figure 13-28 without lifting your pencil or redrawing a line.

to

Finding an Euler circuit is like drawing each of the diagrams in Figure 13-28 without lifting your pencil or redrawing a line, and ending at your starting point.

========================================================================

Appendix A
---------------------------------------------------------------------------

Page A6, 2nd paragraph:

Change limits.h to climits
Change float.h to cfloat

---------------------------------------------------------------------------

Page A12, 2nd paragraph:

Change iostream.h to iostream
---------------------------------------------------------------------------

Page A15, first line of first full paragraph,

Change 4.000000 to 4.00000
---------------------------------------------------------------------------

Page A19 (the code)

Change

#include <iostream.h>

to

#include <iostream>
using namespace std;

---------------------------------------------------------------------------

Page A19 Last paragraph:

Change ctype.h to cctype twice.

---------------------------------------------------------------------------

Page A34 Next-to-last paragraph:

Change string.h to cstring

---------------------------------------------------------------------------

Page A53 Closing a file

Delete the following sentences and the margin note:

"You can have at most one input file and one output file
open at any one time. If you have an input file open, for example, and
you need to read from another file, you must close the current input file
and open the new one."
---------------------------------------------------------------------------

Page A67, near bottom of page

Delete the duplicate "case constantn:
---------------------------------------------------------------------------

Page A73, Exercise 5b, last line

Change the first occurrence of "minTemps" to "mt"
---------------------------------------------------------------------------

========================================================================
Appendix C
---------------------------------------------------------------------------

Page A78, 4th line from bottom

Change "arc cosine" to "hyperbolic cosine"
========================================================================

Inside back cover, 3rd line

Change "mutiply" to "multiply"
---------------------------------------------------------------------------
========================================================================

Index
---------------------------------------------------------------------------

p I15

sort/stability of sorting

Change

482 to 480

---------------------------------------------------------------------------

p I16

stable sorting algorithms

Change

482 to 480