以下2011-11-09更新
3.01 P329,倒数第二行,“结点58的左子树高度为2,”其中2应该改为3。( 小墨的童鞋 提供)
3.02 P330★,中间一段,“(即它的左子树高度2减去右子树高度0)”,应该改为“(即它的左子树高度3减去右子树高度1)”。然后图8-7-3在结点58的右侧增加一个60的结点,如下图。( 小墨的童鞋 提供)
以下2011-11-14更新
3.03 P194,中间第3条,"第7~8行,whild(p!=T)",其中"whild"应该改为"while"。(小老k 提供)
3.04 P251 第三行 “假设 N=(P,{E}) .....” 改为“假设 N=(V,{E}) .....” (小老k 提供)
以下2011-11-23更新
3.05 P126页第三段倒数第二行,“65万”改为“6.5万”(somebodysssss 提供)
以下2011-12-05更新
3.06 P351,中间一段,有四处的└m/2┘都应该是 ┌m/2┐,见下图。( 给你改错 提供)
以下2011-12-07更新
3.07 P288,第二段第二行,“十字链表是邻接矩阵的一种升级,而邻接多重表则是邻接表的升级。”,应该改为“十字链表是针对有向图邻接表结构的优化,邻接多重表是针对无向图邻接表结构的优化。”(韦欢 提供)
以下2011-12-20更新
3.08 (本次改动仅限第三次印刷)P61,代码第三行,"if (!p || j>=i)",请将“=”去掉。P63,代码中间一行,,"if (!p || j>=i)",请将“=”去掉。P65,代码中间一行,"if (!p || j>=i)",请将“=”去掉。(kenly2007 提供)
以下2012-01-09更新
3.09 P68 最后一行,"那么应该让这个链表的指针域置空" ,其中“链表”应该改为“节点”。(落崖惊风 提供)
3.10 P138 最下方的公式,“且‘p1……k-1’”,在“k-1”的左侧少了一个"p". (落崖惊风 提供)
以下2012-02-07更新
3.11 P108 倒数第四行最后一句,“是右括号或优先级低于”,其中“低于”改为“不高于”。(王天兴 提供)
3.12 在源代码中栈与队列的DoubleStack.c中的两个问题(目前源代码已经修正,重新下载即可。书中讲解并无错误):
问题1:
int StackLength(SqDoubleStack S)
{
return (S.top1+1)+(MAXSIZE-1-S.top2);
}
中的语句return (S.top1+1)+(MAXSIZE-1-S.top2); 应该修改为 return (S.top1+1)+(MAXSIZE-S.top2);
问题2: 以下2012-02-13更新 2.19★ P157,表6-4-3的数据第一行 A的firstchild 应该是 1 不是 -1。( 小老K 提供,二次印刷已经勘误过,但未更新掉) 3.14 P234 图7-4-10 右下角那句“V2后再无V0的入边顶点,所以其taillink为空” taillink应该是headlink (风碎月 提供) 以下2012-03-23更新 2.05★★ P58,图3-6-4和图3-6-6,两图中“头指针”改为“后继指针地址”。图3-6-6,“0900”应该改为“NULL” ( 小老K 提供,二次印刷已经勘误过,但未更新掉) 以下是第四次印刷依然存在的不足 以下2012-04-12更新 4.01 P188,第二段整段删除,即“当然,你完全也可以……###DB##CA”这一段。原因在于,由于中序遍历不能首先建立根结点,用加“#”的方法是不可能创建一个二叉树的,后序遍历在特定规则下可以见http://www.cnblogs.com/cj723/archive/2012/01/09/2316791.html#2372197。(猫□咪和 G-rated 提供) 以下2012-05-14更新 2.42★ P216,图7-2-6,顶点B与顶点D缺少两根互为反向的连线。因为有向完全图的定义是任意两个顶点之间都存在方向互为相反的两条弧。 以下2012-06-04更新 4.02 P52,代码第8行,"if (i<1 || i>L->length+1)"当中的“+1”不需要,应该是"if (i<1 || i>L->length)"。( csensix 提供)本处不需要修改,并没有错,详细说明请看我提供的源代码的注释“/* 当i比第一位置小或者比最后一位置后一位置还要大时 */” 以下2012-06-25更新 p70,图3-11-1,时间性能最后一个,“线出”应改为“找出” ( Darker 提供) 以下2012-07-16更新 p261★★ 代码第9行 “(*P)[v]=0 /*初始化路径数组P为0 */” 将其中的0改为-1,即“(*P)[v]=-1 /*初始化路径数组P为-1 */” 。这是因为当为0时本来表示没有路径,但却和数组索引为0的编号重合,导致在一些特殊情况出现最短路径计算错误,提供下载的代码和测试代码也做了修正,请下载查看。(伍迷 自提供) 以下2012-08-08更新 p103,图4-8-3,当中的Fib都改为Fbi。本错误不算严重,可以不改。由于是对Fibonacci这个单词的缩写,Fbi或者Fib都是可以的。为了和代码中的统一,特告知,后续印刷版本,会将这样的小错误修正。(hefeijuan 提供) 以下2013-07-31更新 p153,图6-2-6上方段落第二行,"则其子树的根就在第l+1层","的根"两字去掉。(莫小峰来了 提供) p175,第三段第二行,"简单地假定就是输出结点的数据信息",其中“简单地假定就是”改成"简单地假定访问就是"。(莫小峰来了 提供) p205,右方的图中结点N1~N2少了权值15,N2~N3之间少了权值30,可参看左侧6-12-7的图。(莫小峰来了 提供) p218,最后一段第一行,"第一个顶点到最后一个顶点",其中“到”改为"和"。(莫小峰来了 提供) p249,第一段第二行,"arjvex"改为"adjvex"。(莫小峰来了 提供) p255, 最后一段第一句,“最右图"改为"右下方的图"。(莫小峰来了 提供) p266,第一段第二行, "P代表对应顶点的前驱矩阵",前驱矩阵是什么没解释,后增加一句“,用来存储路径”。(莫小峰来了 提供) P388页,第7点第二段,“由于6、5、4、3都比2小,它们都将右移一位” 应该更正为“由于6、5、4、3都比2大,它们都将右移一位”。(禾鬥雨 提供)
Status StackTraverse(SqDoubleStack S)
{
int i;
i=0;
while(i<=S.top1)
{
visit(S.data[i++]);
}
i=S.top2;
while(i
visit(S.data[i++]);
}
printf("\n");
return OK;
}
中的语句 while(i