<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_伍迷家园</title><subtitle type="text">让编程融入生活</subtitle><id>http://feed.cnblogs.com/blog/u/20725/rss</id><updated>2012-05-31T05:36:18Z</updated><author><name>伍迷</name><uri>http://www.cnblogs.com/cj723/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cj723/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/20725/rss"/><entry><id>http://www.cnblogs.com/cj723/archive/2012/03/15/2396422.html</id><title type="text">技术文章如何写作才能有较好的阅读体验</title><summary type="text">好的技术文章，是让符合阅读条件的读者，在良好阅读体验的情况下，看懂学会甚至掌握文章要传达的信息。如果你的写作是为了分享，那么一定要时刻考虑你的读者，有了这样的心态，不愁写不好技术文章。</summary><published>2012-03-14T16:01:00Z</published><updated>2012-03-14T16:01:00Z</updated><author><name>伍迷</name><uri>http://www.cnblogs.com/cj723/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cj723/archive/2012/03/15/2396422.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cj723/archive/2012/03/15/2396422.html"/><content type="html">&lt;p&gt;上一篇文章我尽管表达了自己的一些想法，但却有些观点写得不够清楚，部分细节让人误解（比如对自信的理解）。所以，我决定重新写一篇专门讲如何写技术文章的博文，来与大家交流我的写作体会。本文适合有一定技术积累愿意与他人分享技术心得的读者。由于并未涉及具体技术，愿意写作的读者均可以阅读。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;技术文章如何写作能让读者有较好的阅读体验，是一个仁者见仁，智者见智的问题。甚至很多人都认为根本不需要考虑读者的感受，把技术写好写准确就可以了，这其实就是一大误区，你的写作如果只是给自己看，当然我也就不多说什么，但如果你的写作是给别人看，就一定要考虑如何写的问题，因为这是一个信息传递的过程而不是简单的记录。&lt;/p&gt;&lt;p&gt;事实上，对于一个准备开始写作的人来说，通常是会认为自己写的东西一定是对的。如果一定要完全正确才可以写文章的话，那就会让绝大多数人裹足不前。因此，写得对不对虽然是作者应该首先要把握的，但是无论作者自己还是别人都无法在写出文章公布之前知道这一点，因此这不是我本文要谈的重点。&lt;/p&gt;&lt;p&gt;我的核心观点是： &lt;strong&gt;好的技术文章，是让符合阅读条件的读者，在良好阅读体验的情况下，看懂学会甚至掌握文章要传达的信息&lt;/strong&gt;。因此，需要写作中不断思考，这样写，读者会有什么感受。如果你的写作不能让读者有一种收获的喜悦，或者阅读体验不佳，那么你的写作就是有问题的。问题可能会有很多方面，我们一点点分析。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;要告知读者文章适合什么人读&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;首先要告知你写的文章适合什么人读，这尽管不是最重要的条件，但你是打算一开始就告诉读者，这文章的适读人群，还是让读者需要读完文章后再自己去判断这文章可不可以看得懂，两者在阅读体验的感觉是完全不一样的。通常一篇文章对于某个读者不是太浅，就是太深。正好是自己不了解的技术知识，自己有兴趣，而又能通过阅读看得懂的文章才是适合的好文章。因此由于读者层次不同，你的文章给什么人看的定位就很重要。&lt;/p&gt;&lt;p&gt;你把你的文章放到了博客园首页上，那就意味着不管什么层次的读者都可能点击进去。你如果不告知读者，这个内容至少需要具备什么样的条件才能阅读，对于一篇有一定技术难度的文章，初学者去阅读它，怎么可能高兴得起来。&lt;/p&gt;&lt;p&gt;反之，如果你在一开头就写明，此文必须要有A、B、C的知识，否则还是不看为妙，那么误入的读者至少可以不需要继续往下看，或者有个心理预期，可能看不懂，不过反正自己也没到那个层次，没什么关系。&lt;/p&gt;&lt;p&gt;如果将写作的具体技术难度分为九级（九级最高），你打算写一篇难度为七级的文章。此时，你不应该考虑水平在一、二、三级的读者，而是将四、五、六级的读者作为目标群，因为你的难度应该要让读者稍微费点力就够得着的，而不是那种根本看不懂的人，这样的定位才会更有针对性。如果你写的内容连二、三级读者都能读懂，那就说明实在是太啰嗦了，细节描述过多。如果只有七级水平的读者才能看得懂，那通常又是因为描述过于简洁而忽视了细节。这两种情况你的文章价值都会大大缩水。&lt;/p&gt;&lt;p&gt;清晰明白地指出文章适合什么样的人读，这有很多方法。可以是标题、摘要或者文章开头，只要达到提醒的作用，不要去浪费非目标读者的时间就对了。&lt;/p&gt;&lt;p&gt;另外，如果可能，还应该在文章末尾提供继续深入学习的建议，比如之后应该阅读什么书，看什么文章等。也就是说，你可以为你的读者指明了接下来学习努力的方向。&lt;/p&gt;&lt;p&gt;总之，你在一开头就告知此文章适合什么人读，帮助了读者节约了判别的时间，这是一个非常好的开始。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;写作内容的难度层级递进&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;不要一上来就是关键知识点，那虽然是一种风格，但却违背了知识（或者说信息）传递的规律。&lt;/p&gt;&lt;p&gt;你在大街上看到了一漂亮姑娘，想让她成为自己的女朋友，你不能直接上去说&amp;ldquo;做我女朋友吧&amp;rdquo;，除非你开着法拉利或许可能。你首先要和她认识，并得到联系方式。简单的办法就是去搭讪。搭讪时如果直接说&amp;ldquo;给我你的手机号如何？&amp;rdquo;显然也是不合适的，除非你长着贝克汉姆的脸兴许可以。所以你得说点不让人反感的话。比如：&amp;ldquo;你那iphone如果开启手势功能，就不需要频繁按Home键了。不信？你看我的&amp;hellip;&amp;hellip;&amp;rdquo;&lt;/p&gt;&lt;p&gt;举技术写作上的例子。在讲算法时间复杂度的知识点时，你当然可以直接讲时间复杂度的定义(就像大多数数据结构教材一样)，可这是很让读者，特别是刚学的人迷惑的，为什么要强调这个呢？而且由于一上来就是对大O阶推导，理解比较困难，读者的体验就相当差。&lt;/p&gt;&lt;p&gt;我在《大话数据结构》书中讲解的办法是先举了从1加到100的算法例子，对比容易想到的算法和高斯算法的差异，来引入算法优劣间的差异，并详细解释了函数渐近增长的原理，最后再来给出时间复杂度的定义，以及推导大O阶的方法。由于读者理解了函数渐近增长的原理，再去理解时间复杂度就变得容易了，这就是层级递进的作法。&lt;/p&gt;&lt;p&gt;运动员比赛前都需要热身，男女亲热前也需要前戏。同样，为了让读者进入阅读状态，用一些简单的例子来预热，用一些稍难的例子来铺垫，然后引出要讲解的重点，这样可以更好的达到讲解好知识的目的。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;strong&gt;得用读者可以理解的语言，而不是你认为好的语言&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;微博上有这样一个段子。一位老太太想知道什么是Facebook，约旦VC Ahmad Takatkah的解释：&lt;br /&gt;1)Facebook是一份报纸；&lt;br /&gt;2)这报纸要在电脑或手机上看；&lt;br /&gt;3)报纸里只有家人和朋友的新闻，第2页是儿子的、第3页是妹妹的&amp;hellip;&lt;br /&gt;4)关于他们的新闻他们自己写；&lt;br /&gt;5)其中有一页是你自己的，想写什么想让谁看你说了算；&lt;br /&gt;6)报纸第1页，是全部内容摘要。&lt;/p&gt;&lt;p&gt;怎么样，是不是感觉很不错？如果为了让老太太理解Facebook，去提什么这是一家社交网站，它可以向亲朋好友分享照片、视频和个人信息等很IT化的语言，她一定是非常困惑。她可能接着就会问&amp;ldquo;什么是社交网站&amp;rdquo;、&amp;ldquo;什么是视频&amp;rdquo;等问题了。&lt;/p&gt;&lt;p&gt;同样，你如果想让你的读者阅读体验好，就一定要用适合他们的文字，而不是你自己喜欢的文字，哪怕你的文笔相当棒。&lt;/p&gt;&lt;p&gt;这一条可能是最重要的一点，信息的传递最终都是为了让读者理解你的意图。写作时，一定要时刻想着用适合读者的语言来表达。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一图值千言&lt;/strong&gt;&lt;br /&gt;用上千个字描述不明白的东西，很可能一张图就能解释清楚。比如我在讲解数据结构的归并排序时，写了很多文字来说明排序的原理，但如果没有下面这样一张图，可能都是遗憾的。很多人也许就在看图的一瞬间，就明白了前面的迷惑原来就是因为大脑里没有这样一个类似的数据变换概念造成的结果。&lt;/p&gt;&lt;p&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="http://pic002.cnblogs.com/images/2012/17166/2012031418291740.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;当然，也不一定要一张完整的大图，也可以是多张小图和相应的文字来解释一个动态的过程。比如下面是进解二叉树前序遍历的部分截图。通过文字加分解图的方式，对于一个知识点的说明还是不错的办法。当然，最好的办法是用动画的形式来表现，目前暂时还不容易做到。或许未来的电子书，应用动静结合的方式将会让读者有更加舒适的阅读体验。&lt;/p&gt;&lt;p&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="http://pic002.cnblogs.com/images/2012/17166/2012031418293846.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;不过你毕竟不是在画漫画，图的目的是为了更好的说明问题，如果只有图，没有抽象的文字来准确的表达你的意图，可能就本末倒置了。&lt;/p&gt;&lt;p&gt;总之，在分析讲解时，能够通过一些图形化的表达来说明问题一定会比纯文字的表达更加容易理解。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;代码分解讲解&lt;/strong&gt;&lt;br /&gt;时常看到这样的情况，写作者会把超过100行的大段代码贴在博客中，然后在前或后面用一段的文字说明自己要分享的观点，这是很难让读者感觉到愉悦的。因为要认真读懂你的代码以及你文字表达的意思，读者就必须要频繁上下翻页，这可是一件非常不爽的体验过程。&lt;/p&gt;&lt;p&gt;解决办法还是有的。不妨将大段的代码分解成一个小函数一段说明文字，甚至是一句代码一段说明文字的方式来讲解。这样的好处就是说明的文字就在代码的旁边，能够很容易就查看到了。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 另外，对于代码的讲解有时需要模拟其运行时的状态，根据某一断点时刻的变量变化情况描述来说明这个函数或这个循环是在干什么。这更加需要分解代码来分析。&lt;/p&gt;&lt;p&gt;很明显，本来是贴一段代码，再写一段文字就算是完事的工作，现在需要一段一段的说明，一定是更耗费精力和时间，但这是很值得的工作。这也是我在本文一再强调的是为读者考虑而非为自己考虑的写作方式。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;多用章节条目段落&lt;/strong&gt;&lt;br /&gt;除非你的文章很短，不然我都建议尽量多分章节条目和段落。这样读者阅读不会太累。&lt;/p&gt;&lt;p&gt;一些单机游戏，比如极品飞车或实况足球等游戏，一般一局的时间不会超过5分钟。为什么要这样设置，因为这可以让玩家精神集中一段时间之后得到一定的时间休息。&lt;/p&gt;&lt;p&gt;同样，读者读的文字，如果几千个字就组成一段话，那将是相当累的，多半情况就是阅读不完就拉倒了。如果几千个字分成六、七节，每一节各有四、五段，那就会好很多。读者可以在每读完一小节时，体会一下其内容，或者去上趟厕所。&lt;/p&gt;&lt;p&gt;即便是阿凡达这样的极品大片，也是有尿点时间的，你的文章为什么不这么做呢？&lt;/p&gt;&lt;p&gt;当然，章节条目最重要的作用是有利于帮助读者了解整个文章的脉络体系，更好的把握这篇文章讲解的内容是什么。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;排版、背景颜色、字体颜色、大小、类型的处理&lt;/strong&gt;&lt;br /&gt;这些本身就是一门学问，都可以专门写本书了。好的排版是没有标准、也没有止境的，可以做到千变万化、赏心悦目。我非这方面特长，就不展开了。&lt;/p&gt;&lt;p&gt;不过，对于大多数读者来说，比较传统的排版就能够取得比较好的阅读效果，反而过于标新立异，比如黑底白字，艺术字体等方式是不可取的。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;善待读者&lt;/strong&gt;&lt;br /&gt;这个本不应该成为一条，但还是觉得有必要提一下。你写给自己看，把自己写成上帝也没人管你。可是你是写给别人看的，你的目的不是打击读者，而是帮助读者，那么写作中以及之后的回复评论中，谦虚或与人为善的态度才是更值得提倡的。 &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;人生来就是不公平的。有些人天生聪明，读了最好的小学、中学、大学，工作在中国IT10强，甚至是世界IT10强的企业。他们自身可能也是非常努力，但由于他的一分努力总是抵得上别人两分甚至五分的努力，加上只会越来越好人文环境和越来越多的技术资源，就算有点坎坷，最终成为技术大牛几乎就是必然。&lt;/p&gt;&lt;p&gt;一个愿意分享技术心得的大牛相当难得，这一点一定要非常肯定。能让大家佩服的原因，还是因为他持续发表优秀文章的结果。但他们又时常会在表达正确技术观点之时，顺带骂几句犯错误的小菜鸟。这种自然而露的优越感总会让一些暂时还学无所成的读者垂头丧气。&lt;/p&gt;&lt;p&gt;我此前就说过，人都是从小长到大的，谁TM没有幼稚过。当你成为了技术牛人的时候，不应该忘记自己当年也是有过技术困惑，也是有过挣扎、努力、失败的情况，体谅一下那些刚刚起步的小兄弟、理解一下他们的无知和浅薄为什么就不可以呢？他们中的有些人可能永远也无法成为技术牛人，但他们依然可以在自己的岗位上做出应有的贡献。你的文章如果打击了一些人，可能就真的伤害了他们，反之，如果可以帮助到其中的一些人，其实也是你对社会的贡献，也是你的价值体现。&lt;/p&gt;&lt;p&gt;其实我也知道，我的这段文字改变不了大牛的态度，他们该怎么写还怎么写。只不过我觉得上天给了他们140分的智慧，他们却只做到了120分的成绩，实在是非常可惜。也就是说，我本觉得他们可以做得更加好。不信？翻看一下曾经的日记，是不是早已经忘记了当年那壮志豪情的理想了呢？&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;OK，重申一下我的观点：&amp;nbsp;&lt;strong&gt;好的技术文章，是让符合阅读条件的读者，在良好阅读体验的情况下，看懂学会甚至掌握文章要传达的信息&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;。我写了一些注意的事项，都算不上新鲜内容，也未必全面，只能算是抛砖引玉。总的说来，如果你的写作是为了分享，那么一定要时刻考虑你的读者，有了这样的心态，不愁写不好技术文章。&lt;/p&gt;&lt;p&gt;注：对于一些如新闻类、搞笑类的博客不在此文指向的范围内。本文只针对技术交流用的博客或者图书的写作。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cj723/aggbug/2396422.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cj723/archive/2012/03/15/2396422.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cj723/archive/2012/03/13/2393651.html</id><title type="text">好的技术文章应该让读者更自信而不是更自卑</title><summary type="text">今天朋友给我微博留言，说我的《大话设计模式》被拍砖了。果不其然，确实是在《放过设计模式吧》的评论第8条中有。还好博主并没有在博文中点名我的书，还算是留了点客气。不过如此轰动的一篇博文（博客园编辑首页推荐），但却传达了一些让初学者困惑的信息——我们初学者在不知道对错的情况下到底还要不要写设计模式的心得文章？针对此我写了一篇吐槽的文章，说说我的想法。</summary><published>2012-03-13T05:48:00Z</published><updated>2012-03-13T05:48:00Z</updated><author><name>伍迷</name><uri>http://www.cnblogs.com/cj723/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cj723/archive/2012/03/13/2393651.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cj723/archive/2012/03/13/2393651.html"/><content type="html">&lt;div&gt;&lt;p&gt;今天朋友给我微博留言，说我的《大话设计模式》被拍砖了。果不其然，确实是在《&lt;a href="http://www.cnblogs.com/winter-cn/archive/2012/03/10/2389575.html" target="_blank"&gt;放过设计模式吧&lt;/a&gt;》的评论&lt;a href="http://www.cnblogs.com/winter-cn/archive/2012/03/10/2389575.html#2327608" target="_blank"&gt;第8条&lt;/a&gt;中有。还好博主并没有在博文中点名我的书，还算是留了点客气。不过如此轰动的一篇博文（博客园编辑首页推荐），但却传达了一些让初学者困惑的信息&amp;mdash;&amp;mdash;我们初学者在不知道对错的情况下到底还要不要写设计模式的心得文章？针对此我写了一篇吐槽的博文，说说我的想法。&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="http://pic002.cnblogs.com/images/2012/17166/2012031313124218.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;我对《放过设计模式吧》文中所说的技术内容绝大部分认同，这点需要事先明确。作者谈了很多他对设计模式的理解和现在网上很多初学者误用设计模式的现象，这些都是可取的。比如将GoF的《设计模式：可复用面向对象软件的基础》应该翻译为《面向对象设计23招》这样的趣解，比如说策略模式和桥接模式的根本不应该因为UML图的类似而就认为他们容易混淆，他们根本就是讲了两回事等。作者对设计模式理解的高度应该是足够了。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 但阅读完毕后，作为一个读者，特别是站在一个初学者的角度，这篇文章却让我感觉很压抑，有一种&amp;ldquo;他对设计模式理解得这么深，让我都不敢再去讨论设计模式了，真心怕挨骂呀！&amp;rdquo;的感觉。我不知道别的读者是否是这样，不过对于阅读本文的那些非擅长设计模式的读者来说，应该有类似的想法。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我一直有一个观点：&amp;ldquo;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;好的技术文章应该让读者更自信而不是更自卑&lt;/strong&gt;&lt;/span&gt;&amp;rdquo;。自信是指读者读完之后，感觉很有收获，心情愉悦，有兴趣可以试着照做。自卑是指读完之后，甚为不爽，这个看不懂，那个不理解，有些观点与作者不同，作者解释不能说服自己，感觉看着没劲，学着费力。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;这篇文章没有明确的给出最终应该怎么做的建议，给人的感觉可能是：&amp;ldquo;如果你没有彻底研究明白GoF的《设计模式》之前，最好不要写文章来献丑，那真是很罪恶的。&amp;rdquo;（希望作者能够声明你其实不是这样的想法，我愿意为这个推论道歉）。难道因为知识理解可能有错误，所以就不要写博客和发表评论了？我觉得不应该是这样的。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;虚构一个在小学手工课上给小朋友讲课的场景：今天我们来学习一个新的工具&amp;mdash;&amp;mdash;锤子。锤子是敲打物体使其移动或变形的工具。最常用来敲钉子，矫正或是将物件敲开（&lt;a href="http://baike.baidu.com/view/166396.htm" target="_blank"&gt;锤子的百度百科定义&lt;/a&gt;）。&amp;hellip;&amp;hellip;等老师介绍完锤子的作用后，让小朋友练习。面对错误使用锤子的小朋友，老师的可能会有两种态度。&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="http://pic002.cnblogs.com/images/2012/17166/2012031313153418.gif" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 第一种：现在你们手头都有一把锤子，你们只可以用它来敲钉子。锤子就是用来敲钉子的，不允许敲别的东西，那样是不对的。&amp;hellip;&amp;hellip;怎么搞的，你怎么可以用它来敲桌子呢，锤子是用来敲钉子的，你太笨了！&amp;hellip;&amp;hellip;有部分违规的小朋友在挨了批评后失去了使用锤子的信心，不玩它了。还有部分小朋友依然用锤子做着违规的事情，他的眼里所有的物品都成了&amp;ldquo;钉子&amp;rdquo;，甚至是用来敲人（鄙视肖传国雇人用锤子伤人），这样的小朋友被老师严厉地批评。整节课下来，大部分小朋友都学会了正确使用锤子，但还是有一些小朋友有些郁闷和叛逆，反正就是&amp;mdash;&amp;mdash;讨厌锤子只能敲钉子。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 第二种：小明，你为什么要用锤子敲桌子呢，这样敲后，桌面就会有凹洞，不就不好看了吗？&amp;hellip;&amp;hellip;你为什么要用锤子打人呢？如果是打在自己身上，会不会很疼？&amp;hellip;&amp;hellip;你能不能不用锤子就把钉子钉进木板？不能是吧，用了锤子感觉如何？是不是很容易了？&amp;hellip;&amp;hellip;同样一堂课下来，同样有部分小朋友在使用锤子的目的上犯了错误，同样结束后还是有部分小朋友会用锤子去敲打不该敲击的东西，但是每个小朋友都没有失去学习的兴趣，都在成长过程中。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 好了，我虚构的场景介绍完了，这个场景的原型是源自&amp;ldquo;&lt;strong&gt;当你手中有一把锤子，什么问题看起来都像是钉子&lt;/strong&gt;&amp;rdquo;的格言。当一个初学者学习设计模式的时候，通常阅读GoF的《设计模式》是效果不好的，一般会打击学习的兴趣，不排除有少部分直接阅读就能理解的初学者，而更多可能是阅读像《Head First设计模式》、《Java与模式》以及我本人写作的《大话设计模式》等等这样的通俗读物来初步了解设计模式。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 刚学完一个模式后，等于初学者手里拿了一把&amp;ldquo;锤子&amp;rdquo;，此时他是否会希望能在自己的编程项目或者练习中使用到这把&amp;ldquo;锤子&amp;rdquo;？当然是希望的。于是他们开始尝试使用，如果用得不好自然就得继续修炼，可也有感觉用得不错的人存在。此时他很希望分享一下自己使用这个设计模式的心得，于是一篇博客就新鲜出炉了。他写得好吗？或许应该这样问，对于一个初学设计模式的人来说，他写的心得可能会很好吗？显然大部分情况是不好的，但是为什么他会愿意写呢？因为他在学习时找到了兴趣，建立了自信，于是他开始写了，并且认为是对的。对于这样的博客，如果当一位专家级的人物在评论中写道：&amp;ldquo;你写得什么垃圾，这个模式不是这样理解的，你还是回去好好读读设计模式的语义吧。&amp;rdquo;你知道这样的评论对于博客主打击有多大吗？也许他再也不会去写设计模式的心得了。反之，另一位读者在下面评论道：&amp;ldquo;你写得不错，但是有理解错误的地方，比如(1)(2)(3)等。&amp;rdquo;于是他们讨论了关于技术的细节，最终这博客主又写了一篇关于这个设计模式的文章，此时他写得比以前好了，赢得了普遍的赞誉。后来，他写了很多篇这样的文章，给读者带来了知识上的分享和收获。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 有读者一定会说，你这不就是在写自己吗？哈哈，我想所有写博客人的想法都是一样的。这既是我的感受，也是所有写了博客人的感受，大家写作的目的都是分享心得，并希望得到赞誉或者中肯的批评，而不是被打击和辱骂。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我始终都认为，在没有一定积累之前，对设计模式的理解大都可能是片面，甚至是错误的（包括我自己），但这不等于不应该鼓励去把自己的想法写下来。事实证明，大部分很牛的人写出来的技术文章是不好读的。因为所谓牛人，已经在学习过程中跨越了N个技术门槛才达到某个高度，此时他已经无法理解初学者的困惑的原因了。就像我在教我儿子认字时，我开始根本无法理解，他怎么会区分不开&amp;ldquo;右&amp;rdquo;、&amp;ldquo;石&amp;rdquo;和&amp;ldquo;万&amp;rdquo;，&amp;ldquo;左&amp;rdquo;和&amp;ldquo;在&amp;rdquo;等字，甚至把&amp;ldquo;车&amp;rdquo;和&amp;ldquo;在&amp;rdquo;字搞混.。但这些就是小朋友的学习难点，你必须得理解他们，耐心教导他们。&lt;/p&gt;&lt;p&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="http://pic002.cnblogs.com/images/2012/17166/2012031313165165.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 一般说我的书是垃圾的读者，通常都是牛人，原因就是他们已经跨越了初学者的障碍，因此没有去认真读我的书，就给出了极端情绪化的否定，说大话纯粹是扯淡。因此对于两本书都持否定态度，这样的批评我一般可以忽略。而前几天有个读者在微博中说&amp;ldquo;&lt;a href="http://weibo.com/1939785480/y907nyK5R" target="_blank"&gt;相比《大话设计模式》，《大话数据结构》真是本垃圾书&lt;/a&gt;。&amp;rdquo;我略感惊讶。说一本不错，而另一本是垃圾，这比较少见。我于是和他在微博中讨论了一下。最终原因找到了，因为他看GoF的书没看懂，所以觉得《大话设计模式》不错，而他之前学过严蔚敏的数据结构，至少是已经非初学数据结构的人了，因此再读我的《大话数据结构》会认为差别不大（唉，那也不至于垃圾呀）。明白了吗？这就是关键。造成被读者极端肯定或否定的原因就在于他之前有没有好好学过它，使得阅读体验结果是愉悦还是失望。事实上，两本书都是我写的，在准备写作《大话数据结构》的时候，我就考虑到了之前一些《大话设计模式》的读者觉得大话过多的意见，而改为少一些白话，多一些讲解的方式，但毕竟两个技术差异太大，你不能指望全都是同样的趣味体验。由于在写作前是购买和阅读了市面上绝大多数有名的数据结构图书才开始写作，除了头两次印刷有不少细节错误是不可原谅以外，整本书对数据结构的讲解是不错的。我个人认为《大数》要比《大设》更好一些。&lt;/p&gt;&lt;p&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="http://pic002.cnblogs.com/images/2012/17166/2012031313141888.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 有点跑题了，回过头来说《放过设计模式吧》这篇博文，我觉得值得阅读，里面作者对设计模式的分析很有学习借鉴的意义，可以帮助读者更好的理解设计模式。但是我依然鼓励所有学习设计模式（也包括其他所有技术）的朋友把自己的学习心得体会写下来，哪怕是不够好的，哪怕是有错的。&lt;strong&gt;人都是从小长到大的，谁TM没幼稚过&lt;/strong&gt;。错了，改就行！对于什么才叫好的技术文章，标准可能有很多条，但我觉得是能让读者阅读愉快，更加自信而不是更加自卑就是其中很重要的一条。&lt;strong&gt;生来世间，多少总得留下点有价值的东西&lt;/strong&gt;，写比不写强，多写写自然就好了，不是吗？加油！&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 吐槽完毕，继续休假式治疗，再见！&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/cj723/aggbug/2393651.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cj723/archive/2012/03/13/2393651.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cj723/archive/2012/02/14/2351248.html</id><title type="text">•《大话数据结构》获中国书刊发行业协会评选的“2011年度全行业优秀畅销品种”</title><summary type="text">刚刚得知，在出版社内部的评奖活动中，我去年写作出版的图书《大话数据结构》获中国书刊发行业协会评选的“2011年度全行业优秀畅销品种”。这是本书的第一个获奖，贴上来小虚荣一下。另外本书第四次印刷马上开始，将会修正前三次印刷发现的所有错误，感谢众位读者的认可和支持，我会继续努力。</summary><published>2012-02-14T08:25:00Z</published><updated>2012-02-14T08:25:00Z</updated><author><name>伍迷</name><uri>http://www.cnblogs.com/cj723/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cj723/archive/2012/02/14/2351248.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cj723/archive/2012/02/14/2351248.html"/><content type="html">&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 刚刚得知，在出版社内部的评奖活动中，我去年写作出版的图书《大话数据结构》获中国书刊发行业协会评选的&amp;ldquo;2011年度全行业优秀畅销品种&amp;rdquo;。这是本书的第一个获奖，贴上来小虚荣一下。另外本书第四次印刷马上开始，将会修正前三次印刷发现的所有错误，感谢众位读者的认可和支持，我会继续努力。&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/17166/2012021416235223.jpg" alt="" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cj723/aggbug/2351248.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cj723/archive/2012/02/14/2351248.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cj723/archive/2012/01/09/2316791.html</id><title type="text">《大话数据结构》简体中文版第三次印刷后勘误</title><summary type="text">《大话数据结构》第三次印刷已经修正了大部分此前的错误，但还是遗留了部分，希望购买的读者能够首先更新勘误中的错误后再阅读。给您带来了不便，抱歉！</summary><published>2012-01-09T01:22:00Z</published><updated>2012-01-09T01:22:00Z</updated><author><name>伍迷</name><uri>http://www.cnblogs.com/cj723/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cj723/archive/2012/01/09/2316791.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cj723/archive/2012/01/09/2316791.html"/><content type="html">&lt;p&gt;&lt;strong&gt;以下2011-11-09更新&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;3.01 P329，倒数第二行，&amp;ldquo;结点58的左子树高度为2，&amp;rdquo;其中2应该改为3。（&amp;nbsp;&lt;a id="Comments1_CommentList_NameLink_99" href="http://www.cnblogs.com/wormday/" target="_blank"&gt;小墨的童鞋&lt;/a&gt;&amp;nbsp;提供）&lt;/p&gt;&lt;p&gt;3.02 P330★，中间一段，&amp;ldquo;（即它的左子树高度2减去右子树高度0）&amp;rdquo;，应该改为&amp;ldquo;（即它的左子树高度3减去右子树高度1）&amp;rdquo;。然后图8-7-3在结点58的右侧增加一个60的结点，如下图。（&amp;nbsp;&lt;a id="Comments1_CommentList_NameLink_99" href="http://www.cnblogs.com/wormday/" target="_blank"&gt;小墨的童鞋&lt;/a&gt;&amp;nbsp;提供）&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011110909302668.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;以下2011-11-14更新&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;3.03 P194，中间第3条，"第7~8行，whild(p!=T)"，其中"whild"应该改为"while"。（小老k 提供）&lt;/p&gt;&lt;p&gt;3.04 P251 第三行 &amp;ldquo;假设 N=(P,{E}) .....&amp;rdquo; 改为&amp;ldquo;假设 N=(V,{E}) .....&amp;rdquo; （小老k 提供）&lt;/p&gt;&lt;p&gt;&lt;strong&gt;以下2011-11-23更新&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;3.05 P126页第三段倒数第二行，&amp;ldquo;65万&amp;rdquo;改为&amp;ldquo;6.5万&amp;rdquo;（&lt;a title="somebodysssss" href="http://weibo.com/u/1717391950"&gt;somebodysssss&lt;/a&gt;&amp;nbsp;提供）&lt;/p&gt;&lt;p&gt;&lt;strong&gt;以下2011-12-05更新&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;3.06 P351，中间一段，有四处的└m/2┘都应该是 ┌m/2┐，见下图。（&amp;nbsp;&lt;a id="Comments1_CommentList_NameLink_98" target="_blank"&gt;给你改错&lt;/a&gt;&amp;nbsp;提供）&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011120516063591.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;以下2011-12-07更新&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;3.07 P288，第二段第二行，&amp;ldquo;十字链表是邻接矩阵的一种升级，而邻接多重表则是邻接表的升级。&amp;rdquo;，应该改为&amp;ldquo;十字链表是针对有向图邻接表结构的优化，邻接多重表是针对无向图邻接表结构的优化。&amp;rdquo;（韦欢 提供）&lt;/p&gt;&lt;p&gt;&lt;strong&gt;以下2011-12-20更新&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;3.08 （本次改动仅限第三次印刷）P61，代码第三行，"if (!p || j&amp;gt;=i)"，请将&amp;ldquo;=&amp;rdquo;去掉。P63，代码中间一行，，"if (!p || j&amp;gt;=i)"，请将&amp;ldquo;=&amp;rdquo;去掉。P65，代码中间一行，"if (!p || j&amp;gt;=i)"，请将&amp;ldquo;=&amp;rdquo;去掉。（&lt;a id="Comments1_CommentList_NameLink_96" href="http://home.cnblogs.com/u/361995/" rel="nofllow" target="_blank"&gt;kenly2007&lt;/a&gt;&amp;nbsp;提供）&lt;/p&gt;&lt;p&gt;&lt;strong&gt;以下2012-01-09更新&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;3.09 P68 最后一行，"那么应该让这个链表的指针域置空"&amp;nbsp;，其中&amp;ldquo;链表&amp;rdquo;应该改为&amp;ldquo;节点&amp;rdquo;。（落崖惊风 提供）&lt;/p&gt;&lt;p&gt;3.10 P138 最下方的公式，&amp;ldquo;且&amp;lsquo;p1&amp;hellip;&amp;hellip;k-1&amp;rsquo;&amp;rdquo;，在&amp;ldquo;k-1&amp;rdquo;的左侧少了一个"p". （落崖惊风 提供）&lt;/p&gt;&lt;p&gt;&lt;strong&gt;以下2012-02-07更新&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;3.11 P108 倒数第四行最后一句，&amp;ldquo;是右括号或优先级低于&amp;rdquo;，其中&amp;ldquo;低于&amp;rdquo;改为&amp;ldquo;不高于&amp;rdquo;。（王天兴 提供）&lt;/p&gt;&lt;p&gt;3.12 在源代码中栈与队列的DoubleStack.c中的两个问题（目前源代码已经修正，重新下载即可。书中讲解并无错误）：&lt;/p&gt;&lt;p&gt;问题1：&lt;br /&gt;int StackLength(SqDoubleStack S)&lt;br /&gt;{ &lt;br /&gt;return (S.top1+1)+(MAXSIZE-1-S.top2);&lt;br /&gt;}&lt;br /&gt;中的语句return (S.top1+1)+(MAXSIZE-1-S.top2); 应该修改为 return (S.top1+1)+(MAXSIZE-S.top2);&lt;/p&gt;&lt;p&gt;问题2：&lt;br /&gt;Status StackTraverse(SqDoubleStack S)&lt;br /&gt;{&lt;br /&gt;int i;&lt;br /&gt;i=0;&lt;br /&gt;while(i&amp;lt;=S.top1)&lt;br /&gt;{&lt;br /&gt;visit(S.data[i++]);&lt;br /&gt;}&lt;br /&gt;i=S.top2;&lt;br /&gt;while(i&amp;lt;MAXSIZE)&lt;br /&gt;{&lt;br /&gt;visit(S.data[i++]);&lt;br /&gt;}&lt;br /&gt;printf("\n");&lt;br /&gt;return OK;&lt;br /&gt;}&lt;br /&gt;中的语句 while(i&amp;lt;S.top1) 应该修改为 while(i&amp;lt;=S.top1) （闫丰 提供）&lt;/p&gt;&lt;p&gt;&lt;strong&gt;以下2012-02-13更新&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;2.19★ P157，表6-4-3的数据第一行 A的firstchild 应该是 1 不是 -1。( &lt;a id="Comments1_CommentList_NameLink_12" href="http://home.cnblogs.com/u/314129/" rel="nofllow" target="_blank"&gt;小老K&lt;/a&gt; 提供，二次印刷已经勘误过，但未更新掉）&lt;/p&gt;&lt;p&gt;&lt;span id="comment_body_2306628" class="blog_comment_body"&gt;3.14 P234 图7-4-10 右下角那句&amp;ldquo;V2后再无V0的入边顶点，所以其taillink为空&amp;rdquo; taillink应该是headlink （&lt;a id="Comments1_CommentList_NameLink_99" href="http://home.cnblogs.com/u/231141/" rel="nofllow" target="_blank"&gt;风碎月&lt;/a&gt;&amp;nbsp;提供）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span class="blog_comment_body"&gt;以下2012-03-23更新&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="blog_comment_body"&gt;2.05★★ P58，图3-6-4和图3-6-6，两图中&amp;ldquo;头指针&amp;rdquo;改为&amp;ldquo;后继指针地址&amp;rdquo;。图3-6-6，&amp;ldquo;0900&amp;rdquo;应该改为&amp;ldquo;NULL&amp;rdquo; ( &lt;a id="Comments1_CommentList_NameLink_12" href="http://home.cnblogs.com/u/314129/" rel="nofllow" target="_blank"&gt;小老K&lt;/a&gt; 提供，二次印刷已经勘误过，但未更新掉)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;&lt;strong&gt;&lt;span class="blog_comment_body"&gt;以下是第四次印刷依然存在的不足&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span class="blog_comment_body"&gt;以下2012-04-12更新&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="blog_comment_body"&gt;4.01 P188，第二段整段删除，即&amp;ldquo;当然，你完全也可以&amp;hellip;&amp;hellip;###DB##CA&amp;rdquo;这一段。原因在于，由于中序遍历不能首先建立根结点，用加&amp;ldquo;#&amp;rdquo;的方法是不可能创建一个二叉树的，后序遍历在特定规则下可以见&lt;a href="http://www.cnblogs.com/cj723/archive/2012/01/09/2316791.html#2372197"&gt;http://www.cnblogs.com/cj723/archive/2012/01/09/2316791.html#2372197&lt;/a&gt;。（猫□咪和 &amp;nbsp;&lt;a id="ctl00_CommentList_NameLink_27" href="http://home.cnblogs.com/u/406771/" rel="nofllow" target="_blank"&gt;G-rated&lt;/a&gt;&amp;nbsp;提供）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span class="blog_comment_body"&gt;以下2012-05-14更新&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="blog_comment_body"&gt;2.42★ P216，图7-2-6，顶点B与顶点D缺少两根互为反向的连线。因为有向完全图的定义是任意两个顶点之间都存在方向互为相反的两条弧。&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cj723/aggbug/2316791.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cj723/archive/2012/01/09/2316791.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cj723/archive/2011/07/11/2103468.html</id><title type="text">转帖：希望伍迷开创一个大话时代——《大话数据结构》读者书评</title><summary type="text">这位豆瓣的读者文字很棒，既写到了买书的原因，也通过举书中的例子提到了本书的特点。面对如此褒奖，伍迷也有些飘飘然起来，淡定淡定，一切又将重新开始！</summary><published>2011-07-11T14:44:00Z</published><updated>2011-07-11T14:44:00Z</updated><author><name>伍迷</name><uri>http://www.cnblogs.com/cj723/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cj723/archive/2011/07/11/2103468.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cj723/archive/2011/07/11/2103468.html"/><content type="html">&lt;p&gt;原文链接：&lt;a href="http://book.douban.com/review/5020205/"&gt;http://book.douban.com/review/5020205/&lt;/a&gt;&amp;nbsp;作者：肉肉小强&lt;/p&gt;&lt;p&gt;&lt;span property="v:description"&gt;两年前的某一天，当时的我还在上大学，在学校的小书店闲逛，发现了大话设计模式，捧在手上翻了下立马被吸引到了，原来程序设计的书也可以写的这么有趣，于是我记住了这个写书写的生动有趣又易懂的作者的名字，程杰。&lt;br /&gt;后来在伍迷大哥的博客上看到他终于又要出新书了，而且是大话数据结构的时候，心里头那个期待啊，想到自己曾经学习严蔚敏老师数据结构时的痛苦过往，刚学完C的我始终不能理解为什么书上要用那些伪码而不是源码并为此纠结了好久，又想到后来再看传说中的圣经《算法导论》拿起来看过好多次又放下好多次，我承认自己不是一个特别沉得下去的人，所以那些大部头的书看起来非常的苦恼，而从博客的样章中，我也觉得这本书从6月份开始我在亚马逊看到可以预定6月25号有货，到6月25号哪天准备买突然发现编程了7月4号有货，7月4号的时候又显示到7月30有货，心里那个纠结啊，伍迷大哥不是在暴雪干过吧，7月8号哪天突然发现亚马逊有货了那个激动啊，立马下单买了一本。&lt;br /&gt;亚马逊送书也木有让我失望，一大早到公司快递就给我送过来了，交钱拿了书，一通猛K。&lt;br /&gt;相比设计模式，数据结构这种抽象化极高的东东想给大话一番还真是颇有难度的啊，估计是伍迷大哥也感受到了这一点，本书没有采用大话设计模式的那种对话模式，采用了教课这种方式来大话数据结构，内容一如既往的生动，不过就看完两章之后我最深的感受还是，应该是得益于曾经教师生涯，伍迷大哥可以用很通俗易懂的表述方式将算法这个很抽象的东西给描述出来，而且很容易就记住了这个描述，比如在描述ADT的时候，举了马里奥的例子，通过马里奥的走，跳，打子弹告诉了读者元素对象及元素操作的关系，而这个偶童年的经典也很容易的引起的偶的怀念与共鸣，再如描述链式存储的时候，举了一个医院排号的例子，&amp;ldquo;只要关注前一个号有没有被叫到，叫到了，下一个就轮到了&amp;rdquo;这个只是生活中很细微的一些点滴，用这个来描述数据结构也是偶头一次见到，这些小小的例子都透露出伍迷大哥悉心，生活中这点点滴滴都是一种学问啊。&lt;br /&gt;读了两章多，还在继续，边读边做一下读书笔记，感觉还真是不一样，就个人感觉而言，如本书封底所说的，这个书非常适合初学数据结构的学生及非科班人士，如果你跟偶一样对算法导论这样的神书无法继续的话，大话数据结构作为一个热身也是非常不错的一种选择。&lt;br /&gt;最后来一些小小的憧憬，希望伍迷大哥继续奋力写下去，写一个属于自己的大话系列，写一个属于中国读者的IT入门全书。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span property="v:description" style="color: #0000ff;"&gt;这位豆瓣的读者文字很棒，既写到了买书的原因，也通过举书中的例子提到了本书的特点。面对如此褒奖，伍迷也有些飘飘然起来，淡定淡定，一切又将重新开始！&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cj723/aggbug/2103468.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cj723/archive/2011/07/11/2103468.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cj723/archive/2011/07/11/2103456.html</id><title type="text">转帖：算法好学吗？——《大话数据结构》读者书评</title><summary type="text">陈钢同学是我的朋友，在我写作时给予了我很多帮助。此评论写得相当客观，并没有夸大地说好话，而是强调了《大话数据结构》仅仅只是数据结构与算法学习的起步而已。我转帖出来，也是希望读者可以了解，算法要学好，可真不是几日之功。我们都需要不断努力！</summary><published>2011-07-11T14:39:00Z</published><updated>2011-07-11T14:39:00Z</updated><author><name>伍迷</name><uri>http://www.cnblogs.com/cj723/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cj723/archive/2011/07/11/2103456.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cj723/archive/2011/07/11/2103456.html"/><content type="html">&lt;p&gt;原文地址：&lt;a href="http://gossipcoder.com/?p=739"&gt;http://gossipcoder.c&lt;wbr&gt;&lt;/wbr&gt;om/?p=739&lt;/a&gt; 作者：陈钢&lt;br /&gt;&lt;br /&gt;摸着键盘写这篇东西的直接动力是给程杰刚刚出版的大作《大话数据结构》写个书评，外加利用我这微乎其微的影响力做做广告&amp;mdash;&amp;mdash;怎么说程杰同学也送了我一本亲笔签名的繁体版《大话数据结构》。不过，今天早上看到了刘未鹏的新文章，&amp;ldquo;知其所以然（三）：为什么算法这么难？&amp;rdquo;，我觉得光写书评不太爽，写点我学算法的失败经历吧，顺带说说程杰同学的这本新书。&lt;br /&gt;&lt;br /&gt;说实话，本文的标题是个伪命题。算法是否好学，或者说是否容易学，完全取决于你的学习目标，是要应付下个月的考试，还是准备考个研究生，或者是想搞定二三流公司的笔试，还是想去微软当科学家&amp;mdash;&amp;mdash;当然，不排除有人的目标是图灵奖。不动脑子都能知道，只是应付考试的学习应该是难度最低的，真正在复杂的业务流程中合理的设计和应用高效的算法的难度无疑要高出一截，至于图灵奖&amp;mdash;&amp;mdash;我也不知道，那玩意太遥远。&lt;br /&gt;&lt;br /&gt;目标的不同导致了所需的学习资料是完全不同的，《大话数据结构》的封底是这样描述它的目标读者的：&lt;br /&gt;&lt;br /&gt;《大话数据结构》适合学过一门编程语言的如下读者：&lt;br /&gt;在读的大中专计算机专业学生；&lt;br /&gt;想转行做开发的非科班人员；&lt;br /&gt;想考计算机专业研究生的应届或在职人员；&lt;br /&gt;工作后想重温数据结构和算法的程序员；&lt;/p&gt;&lt;p&gt;&lt;br /&gt;显然，从目标读者就能看出，这本书不是给&amp;ldquo;高手&amp;rdquo;看的。我曾经扮演过其中的一种角色，&amp;ldquo;想考计算机专业研究生的应届或在职人员&amp;rdquo;，不过我那时候读的是一本经典的教材，严蔚敏老师的《数据结构》（其实在《大话》前言中也提及了这本书）。因为所学的专业跟计算机搭界不多，所以在考研前所有的计算机知识来自于三门包罗万象却连点到即止就算不上的课程：计算机导论、计算机软件设计、计算机硬件设计。当时的学习方法就是刘未鹏说的&amp;ldquo;背&amp;rdquo;，不管算法和各种数据结构的来龙去脉，也无论能否理解，一律背下来。反正当时的目标就是考研究生。&lt;br /&gt;&lt;br /&gt;但我也发现，本为考研究生而短期恶补的知识，应付一般的企业笔试和面试也勉强够了。考研复习其实挺枯燥的，每天重复几乎类似的生活。有天同学说，传说中的华为来学校宣讲。为了调剂一下生活，捏着一页纸的简历就跑去应聘软件开发职位。一轮笔试，几轮面试下来，凭着我两个月恶补的那点数据结构知识，我竟然全部通过了。体验完签约仪式&amp;mdash;&amp;mdash;注意，只是体验了一下，然后回到教室继续备考。&lt;br /&gt;&lt;br /&gt;最后，考研的专业课也得了个还不错的成绩。从这方面看，算法、数据结构之类的东西学起来似乎并不难，短时间抱着死板的教材就能应付考试，应付企业的笔试面试。如果能读读《大话》这样通俗易懂的读物，达到这样的目的应该是更加容易。我当时真正的水平怎么样？啥都不会，动态规划都写不完整，分治法之类的东西就更不懂了。NP-complete理论？没听说过。光是背了几篇经典小说的人，看过小说背景介绍的人是写不出什么好东西的。必须要了解别人作品的前前后后方方面面，自己不停地写，不停地想，才有可能真的写出好东西。算法也是如此，弄清楚每个数据结构、算法的每个细节的缘由，才能设计出自己的好算法。但市面上能像刘未鹏的&amp;ldquo;知其所以然（三）：为什么算法这么难？&amp;rdquo;这样解析算法的书是没有的。即使是刘未鹏写了几篇，要等他攒出一本完整的书，也需要漫长的等待。而且全书每个算法的解析是否都能到这个水平也是个疑问。&lt;br /&gt;&lt;br /&gt;程杰兄的《大话》不可能解决这种问题，也没有填补这个空白的企图。应付考试，参加笔试面试，方便看懂开发文档&amp;mdash;&amp;mdash;这才是《大话》能办到，而且办得不错的事情。很难想象如何在公交车上学习严蔚敏老师的《数据结构》或是饿啃《算法导论》，但我今天确实在回家的公交车上读完了两章《大话》。&lt;br /&gt;&lt;br /&gt;但如果搞计算机的人都停留在《大话》所要达到的水平，那无疑是一种悲哀。我学算法的经历之所以失败，正是因为如此。为了考试而啃完严蔚敏老师的《数据结构》和一两本考试参考书之后，我再也没有读完一本算法的书，也没有自己写过稍有难度的算法。所以，水平也就一直停留在看看文档，调调函数的水平上。&lt;br /&gt;&lt;br /&gt;希望有人能以《大话》为起点，而不是以读完此书为终点；也期望程杰兄能创作出更高水平的佳作。&lt;/p&gt;&lt;p&gt;&lt;span style="color: #0000ff;"&gt;陈钢同学是我的朋友，在我写作时给予了我很多帮助。此评论写得相当客观，并没有夸大地说好话，而是强调了《大话数据结构》仅仅只是数据结构与算法学习的起步而已。我转帖出来，也是希望读者可以了解，算法要学好，可真不是几日之功。我们都需要不断努力！&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cj723/aggbug/2103456.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cj723/archive/2011/07/11/2103456.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cj723/archive/2011/07/04/2097357.html</id><title type="text">《大话数据结构》样章试读</title><summary type="text">本应该直接贴出正文，但考虑到图片过多和排版格式较为复杂，为了能够原汁原味的体现原书风貌，所以就提供PDF文档下载阅读。</summary><published>2011-07-04T06:05:00Z</published><updated>2011-07-04T06:05:00Z</updated><author><name>伍迷</name><uri>http://www.cnblogs.com/cj723/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cj723/archive/2011/07/04/2097357.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cj723/archive/2011/07/04/2097357.html"/><content type="html">&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 各位童鞋，﻿《大话数据结构》从写作到出版，虽然经历了一些坎坷，但终于还是在今天正式在一些网店发售了。现在提供两章的完整版试读PDF文件，希望能给您有所收获，并欢迎给出批评指正意见。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 本应该直接贴出正文，但考虑到图片过多和排版格式较为复杂，为了能够原汁原味的体现原书风貌，所以就提供PDF文档阅读。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;样章试读&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a target="_blank" href="http://files.cnblogs.com/cj723/%E3%80%8A%E5%A4%A7%E8%AF%9D%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E3%80%8B%E7%AC%AC2%E7%AB%A0.pdf"&gt;《大话数据结构》第2章 算法&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_blank" href="http://files.cnblogs.com/cj723/%E3%80%8A%E5%A4%A7%E8%AF%9D%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E3%80%8B%E7%AC%AC9%E7%AB%A0.pdf"&gt;《大话数据结构》第9章 排序&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;﻿﻿相关信息&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a target="_blank" href="http://www.cnblogs.com/cj723/archive/2011/06/01/2065564.html"&gt;﻿前言&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_blank" href="http://files.cnblogs.com/cj723/%E7%9B%AE%E5%BD%95.pdf"&gt;目录&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_blank" href="http://www.cnblogs.com/cj723/archive/2011/06/15/2081574.html"&gt;勘误&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_blank" href="http://files.cnblogs.com/cj723/PlayWithDataStructureSourceCode.zip"&gt;源代码下载&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a target="_blank" href="http://product.china-pub.com/193995"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" href="http://www.tenlong.com.tw/items/9866072118?item_id=321905"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cj723/aggbug/2097357.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cj723/archive/2011/07/04/2097357.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cj723/archive/2011/06/26/2081574.html</id><title type="text">《大话数据结构》简体中文版勘误</title><summary type="text">时常更新，请购买图书的读者关注！</summary><published>2011-06-26T09:26:00Z</published><updated>2011-06-26T09:26:00Z</updated><author><name>伍迷</name><uri>http://www.cnblogs.com/cj723/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cj723/archive/2011/06/26/2081574.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cj723/archive/2011/06/26/2081574.html"/><content type="html">&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 尽管已经很仔细的检查和审核，但错误还是没有能避免。以下的错误，有些是作者的笔误或者表述不清，有些是编辑审稿时不理解造成的错误，有些是美编改图时的错误，有些是印刷厂印刷时的错误。虽然出错的原因很多，但总的来说都会给读者阅读时造成困扰，所以再次向读者说一声对不起！并&lt;strong&gt;请读者时常关注本博文&lt;/strong&gt;，以便可以获得最新的勘误信息。现勘误如下：&lt;/p&gt;&lt;p&gt;注：★★★、★★和★为建议马上修改，它们之间程度不同，没有星为可改可不改，不影响阅读。&lt;/p&gt;&lt;p&gt;第一次印刷：&lt;/p&gt;&lt;p&gt;1.01★ P38，倒数第二行，&amp;ldquo;速度其实只提高了10&amp;rdquo;，后面增加一个&amp;ldquo;倍&amp;rdquo;字。&lt;/p&gt;&lt;p&gt;1.02 P111，第三段，第二行，&amp;ldquo;打算了Reset时&amp;rdquo;，多了一个&amp;ldquo;了&amp;rdquo;字。目录P15，同样的问题。&lt;/p&gt;&lt;p&gt;1.03★★★ P268，P269，图7-7-14，图7-7-15，图7-7-16横竖条中都是有符号或数字的，目前因印刷问题没有显示。&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011062616503794.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011062616513781.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011062616514951.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;1.04 P377 &amp;ldquo;时间性能&amp;rdquo;这一段中 "事实上，移动可以通过改为记录的存储方式来予以避免" ，其中&amp;ldquo;改为&amp;rdquo;应该是&amp;ldquo;改变&amp;rdquo;&lt;/p&gt;&lt;p&gt;1.05★★ P35，第一行，有一个&amp;ldquo;+&amp;rdquo;号应该是&amp;ldquo;=&amp;rdquo;，见下图&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011062616442986.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;第二次印刷：&lt;/p&gt;&lt;p&gt;2.01 P383，代码第6行，&amp;ldquo; for(i=1;i&amp;lt;L-&amp;gt;length &amp;amp;&amp;amp; flag; i++)&amp;nbsp; /*若flag为true则退出循环*/&amp;rdquo; 其中注释应该改为&amp;ldquo;/* 若flag为true说明有过数据交换，否则停止循环 */&amp;rdquo;（ &lt;a href="http://www.cnblogs.com/showblog/"&gt;My Blogs &lt;/a&gt;提供）&lt;/p&gt;&lt;p&gt;2.02 P20，代码中&amp;ldquo;int i,sum =0, n = 100;&amp;rdquo;中的"i,"是多余的，可以删除，因为没有用到i变量。（&amp;nbsp;&lt;a id="Comments1_CommentList_NameLink_7" href="http://www.cnblogs.com/agp001/" target="_blank"&gt;AGPSky&lt;/a&gt; 提供）&lt;/p&gt;&lt;p&gt;2.03 P43，图3-2-2，在天秤和射手之间，少了一个&amp;ldquo;天蝎座&amp;rdquo;。&amp;nbsp;( &lt;a id="Comments1_CommentList_NameLink_12" href="http://home.cnblogs.com/u/314129/" rel="nofllow" target="_blank"&gt;小老K&lt;/a&gt; 提供)&lt;/p&gt;&lt;p&gt;2.04 P58，图3-6-5，左侧第三条，&amp;ldquo;头指针均不为空&amp;rdquo;应该改为&amp;ldquo;头指针均存在&amp;rdquo; ( &lt;a id="Comments1_CommentList_NameLink_12" href="http://home.cnblogs.com/u/314129/" rel="nofllow" target="_blank"&gt;小老K&lt;/a&gt; 提供)&lt;/p&gt;&lt;p&gt;2.05★★ P58，图3-6-4和图3-6-6，两图中&amp;ldquo;头指针&amp;rdquo;改为&amp;ldquo;后继指针地址&amp;rdquo;。图3-6-6，&amp;ldquo;0900&amp;rdquo;应该改为&amp;ldquo;NULL&amp;rdquo; (&amp;nbsp;&lt;a id="Comments1_CommentList_NameLink_12" href="http://home.cnblogs.com/u/314129/" rel="nofllow" target="_blank"&gt;小老K&lt;/a&gt;&amp;nbsp;提供)&lt;/p&gt;&lt;p&gt;2.06 P60，中间编号1后面，&amp;ldquo;声明一个结点p&amp;rdquo;改为&amp;ldquo;声明一指针p&amp;rdquo;。下方代码中第6行，&amp;ldquo;/*声明一结点p*/&amp;rdquo;应该改为&amp;ldquo;/*声明一指针p*/&amp;rdquo;。( &lt;a id="Comments1_CommentList_NameLink_12" href="http://home.cnblogs.com/u/314129/" rel="nofllow" target="_blank"&gt;小老K&lt;/a&gt; 提供)&lt;/p&gt;&lt;p&gt;2.07 P64，第一句：&amp;ldquo;用来存放e数据s结点。&amp;rdquo;，将&amp;ldquo;e数据s结点"改成&amp;ldquo;数据e的s结点&amp;rdquo; ( &lt;a id="Comments1_CommentList_NameLink_12" href="http://home.cnblogs.com/u/314129/" rel="nofllow" target="_blank"&gt;小老K&lt;/a&gt; 提供)&lt;/p&gt;&lt;p&gt;2.08&amp;nbsp;P71，倒数第三段第三行，&amp;ldquo;而游标cur相当于单链表中的next指针，存放该元素的后继在数组中的下标。&amp;rdquo;，将&amp;ldquo;游标&amp;rdquo;两字删除，并在句子最后句号前增加一句:&amp;ldquo;，我们把cur叫做游标。&amp;rdquo;&amp;nbsp;( &lt;a id="Comments1_CommentList_NameLink_12" href="http://home.cnblogs.com/u/314129/" rel="nofllow" target="_blank"&gt;小老K&lt;/a&gt; 提供)&lt;/p&gt;&lt;p&gt;2.09 P105，第五段第二行，&amp;ldquo;只有碰到左括号&amp;rdquo;改为&amp;ldquo;只要碰到左括号&amp;rdquo;。 ( &lt;a id="Comments1_CommentList_NameLink_12" href="http://home.cnblogs.com/u/314129/" rel="nofllow" target="_blank"&gt;小老K&lt;/a&gt; 提供)&lt;/p&gt;&lt;p&gt;2.10 P105，第五段最后一行，&amp;ldquo;最终再因全部匹配成功后成为空栈的结果。&amp;rdquo;，将&amp;ldquo;的结果&amp;rdquo;删除。( &lt;a id="Comments1_CommentList_NameLink_12" href="http://home.cnblogs.com/u/314129/" rel="nofllow" target="_blank"&gt;小老K&lt;/a&gt; 提供)&lt;/p&gt;&lt;p&gt;2.11★★ P109，第6条，将第一个句号前的句子与第二个句号前的句子对调。结果为&amp;ldquo;紧接着是符号"X"，因为此时的栈顶符号&amp;hellip;&amp;hellip;因此不输出，"*"进栈。接着是数字3，输出，总的表达式为931-3。&amp;rdquo;( &lt;a id="Comments1_CommentList_NameLink_12" href="http://home.cnblogs.com/u/314129/" rel="nofllow" target="_blank"&gt;小老K&lt;/a&gt; 提供)&lt;/p&gt;&lt;p&gt;2.12★ P126，第三段倒数第二行，&amp;ldquo;表示216个字符&amp;rdquo;，&amp;ldquo;216&amp;rdquo;应该改为&amp;ldquo;2&lt;sup&gt;16&lt;/sup&gt;&amp;rdquo;（&lt;a id="Comments1_CommentList_NameLink_20" href="http://www.cnblogs.com/strider/" target="_blank"&gt;strider&lt;/a&gt;&amp;nbsp;提供）&lt;/p&gt;&lt;p&gt;2.13★★ P137，第四段第一行，&amp;ldquo;假设S="abcabcabc"，&amp;rdquo;，其中的字符串S应该是&amp;ldquo;abcababca&amp;rdquo;。图5-7-4和图5-7-5的第①图，都应该改为下图所示。（&lt;a id="Comments1_CommentList_NameLink_20" href="http://www.cnblogs.com/strider/" target="_blank"&gt;strider&lt;/a&gt;&amp;nbsp;提供）&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011071023014883.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;2.14★ P138，倒数第二段第二行，&amp;ldquo;而图5-7-4中，&amp;rdquo;改为&amp;ldquo;而图5-7-5中，&amp;rdquo;。（&lt;a id="Comments1_CommentList_NameLink_20" href="http://www.cnblogs.com/strider/" target="_blank"&gt;strider&lt;/a&gt;&amp;nbsp; &lt;a id="Comments1_CommentList_NameLink_69" href="http://home.cnblogs.com/u/200291/" rel="nofllow" target="_blank"&gt;&lt;span style="color: #223355;"&gt;秦萌&lt;/span&gt;&lt;/a&gt;&amp;nbsp;提供）&lt;/p&gt;&lt;p&gt;2.15★ &lt;span id="comment_body_2148315" class="blog_comment_body"&gt;P144，5.7.5小节中第1号小标题中：&amp;ldquo;先计算出next数组的值分别为001234223&amp;rdquo;，应改为011234223&amp;rdquo;。（&lt;a id="Comments1_CommentList_NameLink_20" href="http://www.cnblogs.com/strider/" target="_blank"&gt;strider&lt;/a&gt; 提供）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;2.16★ &lt;span id="comment_body_2148322" class="blog_comment_body"&gt;P145，9)"当j=9时，next值为3，.....因此nextval[9]=nextval[3]=1" 最后的&amp;ldquo;1&amp;rdquo;应改为&amp;ldquo;0&amp;rdquo;。（&lt;a id="Comments1_CommentList_NameLink_20" href="http://www.cnblogs.com/strider/" target="_blank"&gt;strider&lt;/a&gt; 提供）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="blog_comment_body"&gt;2.17 P153，6.2.3节第一段第三行，&amp;ldquo;而G、H、I、J也是。&amp;rdquo;，应该改为&amp;ldquo;而G、H、I与J也是堂兄弟。&amp;rdquo; （康凯 提供）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;2.18 &lt;span id="comment_body_2148334" class="blog_comment_body"&gt;P155，6.4.1小节第二段第二行：&amp;ldquo;其双亲结点到链表中的位置&amp;rdquo;应改为&amp;ldquo;其双亲结点&lt;span style="text-decoration: underline;"&gt;在数组&lt;/span&gt;中的位置&amp;rdquo;。（&lt;a id="Comments1_CommentList_NameLink_20" href="http://www.cnblogs.com/strider/" target="_blank"&gt;strider&lt;/a&gt; 提供）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;2.19★ P157，表6-4-3的数据第一行 A的firstchild 应该是 1 不是 -1。( &lt;a id="Comments1_CommentList_NameLink_12" href="http://home.cnblogs.com/u/314129/" rel="nofllow" target="_blank"&gt;小老K&lt;/a&gt; 提供)&lt;/p&gt;&lt;p&gt;2.20★ P169，6.6.2 二叉树性质2的第四段，&amp;ldquo;如果有一层，至多1=2&lt;sup&gt;0&lt;/sup&gt;-1个结点&amp;rdquo;，应该是&amp;ldquo;2&lt;sup&gt;1&lt;/sup&gt;-1个结点&amp;rdquo;。（康凯 提供）&lt;/p&gt;&lt;p&gt;2.21★ P170，倒数第二段第二行，&amp;ldquo;倒推得到满二叉树的度数为&amp;rdquo;，其中&amp;ldquo;度数&amp;rdquo;改为&amp;ldquo;深度&amp;rdquo;，第三行，&amp;ldquo;度为4&amp;rdquo;，应该改为&amp;ldquo;深度为4&amp;rdquo;。( &lt;a id="Comments1_CommentList_NameLink_12" href="http://home.cnblogs.com/u/314129/" rel="nofllow" target="_blank"&gt;小老K&lt;/a&gt; 提供)&lt;/p&gt;&lt;p&gt;2.22★ P171，第一行&amp;ldquo;等于同样的度数&amp;rdquo;，&amp;ldquo;度数&amp;rdquo;改为&amp;ldquo;深度&amp;rdquo;；第四行，&amp;ldquo;而k作为度数也是整数&amp;rdquo;，&amp;ldquo;度数&amp;rdquo;改为&amp;ldquo;深度&amp;rdquo;；图6-6-2上面一段，&amp;ldquo;这是一个完全二叉树，度为4&amp;rdquo;，&amp;ldquo;度为4&amp;rdquo;改为&amp;ldquo;深度为4&amp;rdquo;。( &lt;a id="Comments1_CommentList_NameLink_12" href="http://home.cnblogs.com/u/314129/" rel="nofllow" target="_blank"&gt;小老K&lt;/a&gt; 提供)&lt;/p&gt;&lt;p&gt;2.23 P199，5~6行 &amp;ldquo;比如图6-11-4中最右侧的树&amp;rdquo;，将&amp;ldquo;最右侧&amp;rdquo;改为&amp;ldquo;右下方&amp;rdquo;。倒数3～4行 &amp;ldquo;比如图6-11-5右侧三棵树的森林&amp;rdquo;，将&amp;ldquo;右侧&amp;rdquo;改为&amp;ldquo;下面&amp;rdquo;。P200 第一行 &amp;ldquo;6-11-5右侧三棵树的森林&amp;rdquo;，&amp;ldquo;右侧&amp;rdquo;改为&amp;ldquo;下面&amp;rdquo;。( &lt;a id="Comments1_CommentList_NameLink_12" href="http://home.cnblogs.com/u/314129/" rel="nofllow" target="_blank"&gt;小老K&lt;/a&gt; 提供)&lt;/p&gt;&lt;p&gt;2.24★ P200，第二行，&amp;ldquo;我们对图6-11-4的左侧二叉树&amp;rdquo;，&amp;ldquo;6-11-4&amp;rdquo;改为&amp;ldquo;6-11-5&amp;rdquo;。( &lt;a id="Comments1_CommentList_NameLink_12" href="http://home.cnblogs.com/u/314129/" rel="nofllow" target="_blank"&gt;小老K&lt;/a&gt; 提供)&lt;/p&gt;&lt;p&gt;2.25 P203，第一行，&amp;ldquo;我们先把这两棵二叉树简化成叶子结点带权的二叉树&amp;rdquo;，应该加&amp;ldquo;注：树结点间的边相关的数叫做权（Weight）&amp;rdquo;。( &lt;a id="Comments1_CommentList_NameLink_12" href="http://home.cnblogs.com/u/314129/" rel="nofllow" target="_blank"&gt;小老K&lt;/a&gt; 提供)&lt;/p&gt;&lt;p&gt;2.26 P203，第三段第四行，&amp;ldquo;每个叶子的路径长度为lk&amp;rdquo;,其中"lk"应该改为&amp;ldquo;l&lt;sub&gt;k&lt;/sub&gt;&amp;rdquo;，即k是下标。( &lt;a id="Comments1_CommentList_NameLink_12" href="http://home.cnblogs.com/u/314129/" rel="nofllow" target="_blank"&gt;小老K&lt;/a&gt; 提供)&lt;/p&gt;&lt;p&gt;2.27 P218，倒数第二段第一行，&amp;ldquo;图7-2-9中的左侧&amp;rdquo;，其中&amp;ldquo;左侧&amp;rdquo;改为&amp;ldquo;上方&amp;rdquo;，后面的&amp;ldquo;右侧两条路径长度为3&amp;rdquo;，其中&amp;ldquo;右侧&amp;rdquo;改为&amp;ldquo;下方&amp;rdquo;。( &lt;a id="Comments1_CommentList_NameLink_12" href="http://home.cnblogs.com/u/314129/" rel="nofllow" target="_blank"&gt;小老K&lt;/a&gt; 提供)&lt;/p&gt;&lt;p&gt;2.28★ P219，中间一段第二行，&amp;ldquo;&lt;span style="font-family: 宋体; font-size: 10.5pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"&gt;两个顶点&lt;/span&gt;&lt;span style="font-family: 'Calibri','sans-serif'; font-size: 10.5pt; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体;" lang="EN-US"&gt;v&lt;sub&gt;i&lt;/sub&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 10.5pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"&gt;、&lt;/span&gt;v&lt;sub&gt;j&lt;/sub&gt;&amp;isin;E&lt;span style="font-family: 宋体; font-size: 10.5pt; mso-bidi-font-size: 11.0pt; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;"&gt;，&lt;/span&gt;&amp;rdquo;，这里&amp;ldquo;E&amp;rdquo;应该改成&amp;ldquo;V&amp;rdquo; (&lt;a id="Comments1_CommentList_NameLink_40" href="http://www.cnblogs.com/csusofttjl/" target="_blank"&gt;&lt;span style="color: #223355;"&gt;咖啡崽&lt;/span&gt;&lt;/a&gt; 提供)&lt;/p&gt;&lt;p&gt;2.29★ P220，倒数第二行，&amp;ldquo;在存在&amp;rdquo;，应该改成&amp;ldquo;不存在&amp;rdquo;。(&lt;a id="Comments1_CommentList_NameLink_40" href="http://www.cnblogs.com/csusofttjl/" target="_blank"&gt;&lt;span style="color: #223355;"&gt;咖啡崽&lt;/span&gt;&lt;/a&gt; 提供)&lt;/p&gt;&lt;p&gt;2.30★★ P220，图7-2-13的图1和图2，顶点A与顶点B之间的箭头都画反了。(&lt;a id="Comments1_CommentList_NameLink_40" href="http://www.cnblogs.com/csusofttjl/" target="_blank"&gt;&lt;span style="color: #223355;"&gt;咖啡崽&lt;/span&gt;&lt;/a&gt; 提供)&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011071821250669.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;2.31★★★ P338，图8-7-10，图中有小错误，且图形过于繁琐，不利于读者理解，因此做比较大的修改如下图。（康凯 提供）&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011072001034539.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;2.32 P52，代码中间部分，&amp;ldquo;for(k=L&amp;gt;length-1;k&amp;gt;=i-1;k--&amp;rdquo;后面少了一个&amp;ldquo;）&amp;rdquo;。（&lt;a id="Comments1_CommentList_NameLink_49" href="http://www.cnitblog.com/r.aspx?url=http://www.weibo.com/qiulingxiao" rel="nofllow" target="_blank"&gt;&lt;span style="color: #223355;"&gt;萧萧Leo&lt;/span&gt;&lt;/a&gt;&amp;nbsp;提供）&lt;/p&gt;&lt;p&gt;&lt;span id="comment_body_2157523" class="blog_comment_body"&gt;2.33 P95，第二行 &amp;ldquo;另一个栈为栈的末端&amp;rdquo;&amp;nbsp;应该改成&amp;ldquo;另一个栈为数组的末端&amp;rdquo;。（&amp;nbsp;&lt;a id="Comments1_CommentList_NameLink_7" href="http://www.cnblogs.com/agp001/" target="_blank"&gt;AGPSky&lt;/a&gt; 提供）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="blog_comment_body"&gt;2.34 P248，倒数第六行，&amp;ldquo;arjvex&amp;rdquo;应该为&amp;ldquo;adjvex&amp;rdquo;。（&lt;a id="Comments1_CommentList_NameLink_55" href="http://home.cnblogs.com/u/317166/" rel="nofllow" target="_blank"&gt;&lt;span style="color: #223355;"&gt;萧萧Leo&lt;/span&gt;&lt;/a&gt;&amp;nbsp;提供）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="blog_comment_body"&gt;2.35★ P263，第8小节，&amp;ldquo;此时i=2。&amp;rdquo;改成&amp;ldquo;此时v=2。&amp;rdquo;。P264，第11小节，&amp;ldquo;此时i=3。&amp;rdquo;改成&amp;ldquo;此时v=3。&amp;rdquo;（&lt;a id="Comments1_CommentList_NameLink_55" href="http://home.cnblogs.com/u/317166/" rel="nofllow" target="_blank"&gt;&lt;span style="color: #223355;"&gt;萧萧Leo&lt;/span&gt;&lt;/a&gt;&amp;nbsp;提供）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="blog_comment_body"&gt;2.36★ P260-P261，书中代码&amp;ldquo;matirx&amp;rdquo;都应该改为&amp;ldquo;matrix&amp;rdquo;（一共有五处修改，分别是P260倒数第三行，P261，代码1、8、27、29行）。在提供下载的代码中，统一将matrix修改成了arc。（&lt;a id="Comments1_CommentList_NameLink_55" href="http://home.cnblogs.com/u/317166/" rel="nofllow" target="_blank"&gt;&lt;span style="color: #223355;"&gt;萧萧Leo&lt;/span&gt;&lt;/a&gt;&amp;nbsp;提供）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="blog_comment_body"&gt;2.37★★ P285，倒数第四行，公式中&amp;ldquo;min{ltv[j]+len&amp;hellip;&amp;hellip;&amp;rdquo;，中&amp;ldquo;+&amp;rdquo;应该是&amp;ldquo;-&amp;rdquo;（&lt;a id="Comments1_CommentList_NameLink_55" href="http://home.cnblogs.com/u/317166/" rel="nofllow" target="_blank"&gt;&lt;span style="color: #223355;"&gt;萧萧Leo&lt;/span&gt;&lt;/a&gt;&amp;nbsp;提供）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="blog_comment_body"&gt;2.38★★ P81，第一行代码，&amp;ldquo;rearB-&amp;gt;next=p; free(p);&amp;rdquo; 应该在这两句上方加一句&amp;ldquo;q=rearB-&amp;gt;next; &amp;rdquo;（即在四句代码的中间增加一句），并修改最后的&amp;ldquo;free(p);"为&amp;ldquo;free(q);&amp;nbsp;/*释放q*/&amp;nbsp;&amp;rdquo; (&lt;a id="Comments1_CommentList_NameLink_62" target="_blank"&gt;&lt;span style="color: #223355;"&gt;siatliuliu1&lt;/span&gt;&lt;/a&gt;&amp;nbsp;提供)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="text-decoration: line-through;"&gt;&lt;span class="blog_comment_body"&gt;2.39 P26，倒数第四行最后，&amp;ldquo;运算100次是运算10次的100&amp;rdquo;，应该是&amp;ldquo;运算10次的1000&amp;rdquo;。&lt;/span&gt;&lt;/span&gt;&lt;span class="blog_comment_body"&gt;（&lt;/span&gt;&lt;span class="blog_comment_body"&gt;&lt;a id="Comments1_CommentList_NameLink_76" href="http://home.cnblogs.com/u/325073/" rel="nofllow" target="_blank"&gt;&lt;span style="color: #223355;"&gt;laciqs&lt;/span&gt;&lt;/a&gt;&amp;nbsp;提供）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="blog_comment_body"&gt;2.40★★★ P46，union代码，有不少的问题，修正如下图。union是C语言的关键字，因此函数名增加一个L。具体实现代码，请参见源代码中的&amp;ldquo;01线性表顺序存储_List.c&amp;rdquo;文件（&lt;a id="Comments1_CommentList_NameLink_76" href="http://home.cnblogs.com/u/325073/" rel="nofllow" target="_blank"&gt;&lt;span style="color: #223355;"&gt;laciqs&lt;/span&gt;&lt;/a&gt;&amp;nbsp;提供）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011081913210864.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;2.41 P59，倒数第五行，&amp;ldquo;结点由存放数据元素的数据域&amp;rdquo;后面加一个&amp;ldquo;和&amp;rdquo;字。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;以下2011-8-23更新&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;2.42★ P216，图7-2-6，顶点B与顶点D缺少两根互为反向的连线。因为有向完全图的定义是任意两个顶点之间都存在方向互为相反的两条弧。（&lt;a id="Comments1_CommentList_NameLink_90" target="_blank"&gt;&lt;span style="color: #223355;"&gt;Zhangth&lt;/span&gt;&lt;/a&gt;&amp;nbsp;提供）&lt;/p&gt;&lt;p&gt;2.43★ &lt;span id="comment_body_2182104" class="blog_comment_body"&gt;P247。图7-6-3中邻接矩阵有些错误。 arc[v2][v1]应该是18， arc[v3][v6]和arc[v6][v3]都应该是24。&lt;/span&gt; （&lt;a id="Comments1_CommentList_NameLink_90" target="_blank"&gt;&lt;span style="color: #223355;"&gt;Zhangth&lt;/span&gt;&lt;/a&gt;&amp;nbsp;提供）&lt;/p&gt;&lt;p&gt;2.44★ P330，图8-7-2，图1，删除叶子结点35和结点99。（&lt;a id="Comments1_CommentList_NameLink_97" target="_blank"&gt;&lt;span style="color: #223355;"&gt;黑洞熵&lt;/span&gt;&lt;/a&gt;&amp;nbsp;提供）&lt;/p&gt;&lt;p&gt;&lt;strong&gt;以下2011-8-25更新&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;2.45 P285&amp;nbsp; 第6小节，&amp;ldquo;ltv相对应的值为19、25、13&amp;rdquo;，三个数字的顺序应该是&amp;ldquo;19、13、25&amp;rdquo;。（&lt;a id="Comments1_CommentList_NameLink_97" target="_blank"&gt;&lt;span style="color: #223355;"&gt;黑洞熵&lt;/span&gt;&lt;/a&gt;&amp;nbsp;提供）&lt;/p&gt;&lt;p&gt;2.46 &lt;span id="comment_body_2184588" class="blog_comment_body"&gt;P332，第一行，&amp;ldquo;平衡因子没有发生改变&amp;rdquo;，改为&amp;ldquo;平衡因子没有超出限定范围（-1，0，1）&amp;rdquo;。 （&lt;a id="Comments1_CommentList_NameLink_97" target="_blank"&gt;&lt;span style="color: #223355;"&gt;黑洞熵&lt;/span&gt;&lt;/a&gt;&amp;nbsp;提供）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="blog_comment_body"&gt;2.47★ &lt;span id="comment_body_2184624" class="blog_comment_body"&gt;P334，图8-7-8中的图15中结点7的BF值应该是-2而不是-1。（&lt;a id="Comments1_CommentList_NameLink_97" target="_blank"&gt;&lt;span style="color: #223355;"&gt;黑洞熵&lt;/span&gt;&lt;/a&gt;&amp;nbsp;提供）&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;2.48★ &lt;span id="comment_body_2185553" class="blog_comment_body"&gt;P347 第二段，情形二的第二行，&amp;ldquo;此时删除结点1&amp;rdquo;，修改为&amp;ldquo;此时删除结点4&amp;rdquo;。（&lt;a id="Comments1_CommentList_NameLink_97" target="_blank"&gt;&lt;span style="color: #223355;"&gt;黑洞熵&lt;/span&gt;&lt;/a&gt;&amp;nbsp;提供）&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;以下2011-8-30更新&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;&lt;span id="comment_body_2187830" class="blog_comment_body"&gt;2.49★ P375，第二段第三行，&amp;ldquo;（非递减或非递增）关系&amp;rdquo;，是应该写成&amp;ldquo;非递减（或非递增）关系&amp;rdquo;。（&lt;a id="Comments1_CommentList_NameLink_97" target="_blank"&gt;&lt;span style="color: #223355;"&gt;黑洞熵&lt;/span&gt;&lt;/a&gt;&amp;nbsp;提供）&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;&lt;strong&gt;&lt;span class="blog_comment_body"&gt;以下2011-9-1更新&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;2.50★ P76，第一段第二行，&amp;ldquo;j=k[999].cur=1",应该将&amp;ldquo;k"修改为&amp;ldquo;L&amp;rdquo;。（&lt;span style="color: #223355;"&gt;&lt;a href="http://home.cnblogs.com/u/328339/"&gt;Mark1940&lt;/a&gt;&lt;/span&gt;&amp;nbsp;提供）&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;2.51★ &lt;span id="comment_body_2189556" class="blog_comment_body"&gt;P387，第3条最后一行 &amp;ldquo;L.r[j-1]=L.r[j] &amp;rdquo;应该是&amp;ldquo;L.r[j+1]=L.r[j]&amp;rdquo; （&lt;a href="http://home.cnblogs.com/u/317166/"&gt;&lt;span style="color: #223355;"&gt;萧萧Leo&lt;/span&gt;&amp;nbsp;&lt;/a&gt;提供）&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;以下2011-9-2更新&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;2.52 &lt;span id="comment_body_2190311" class="blog_comment_body"&gt;P57，第6行,"元素ai的存储映像,称为节点"中的i应该是a的下标.（&lt;a id="Comments1_CommentList_NameLink_99" href="http://www.cnblogs.com/Jennifer/" target="_blank"&gt;&lt;span style="color: #223355;"&gt;Jeallyn&lt;/span&gt;&lt;/a&gt;&amp;nbsp;提供）&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;以下2011-9-7更新&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;2.53★ P319，代码下第一段第一行，"InsertBST(T,93)"应该是"InsertBST(&amp;amp;T,93)"，第二行，"InsertBST(T,95)"应该是"InsertBST(&amp;amp;T,95)" （&lt;a id="Comments1_CommentList_NameLink_99" href="http://home.cnblogs.com/u/315967/" rel="nofllow" target="_blank"&gt;&lt;span style="color: #223355;"&gt;ff22&lt;/span&gt;&lt;/a&gt;&amp;nbsp;提供）&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;以下2011-9-21更新&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;2.54 P398，中间一段，堆排序定义的倒数第二行，&amp;ldquo;这样就会得到n个元素中的次小值&amp;rdquo;，其中&amp;ldquo;次小&amp;rdquo;应该改为&amp;ldquo;次大&amp;rdquo;。（&lt;a id="Comments1_CommentList_NameLink_99" href="http://home.cnblogs.com/u/315967/" rel="nofllow" target="_blank"&gt;&lt;span style="color: #223355;"&gt;ff22&lt;/span&gt;&lt;/a&gt;&amp;nbsp;提供）&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;以下2011-10-8更新&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;2.55 P235，图7-4-11，V1点的阴影应该改为V2 ，修改结果见下图（&lt;a id="Comments1_CommentList_NameLink_99" href="http://home.cnblogs.com/u/323618/" rel="nofllow" target="_blank"&gt;&lt;span style="color: #223355;"&gt;盲剑客&lt;/span&gt;&lt;/a&gt;&amp;nbsp;提供）&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011100815192988.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;以下2011-10-18更新&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;2.56 P339★，代码第22行，"if (taller)"，应该改为"if (*taller)"。本书提供的源代码也有相同错误，已经做了修改。（&lt;a id="Comments1_CommentList_NameLink_99" target="_blank"&gt;&lt;span style="color: #223355;"&gt;Jakson&lt;/span&gt;&lt;/a&gt;&amp;nbsp;提供）&lt;/p&gt;&lt;p&gt;2.57 P158，图6-4-2，每个结点末尾都多画了一个指针域（即应该有四个方格却画了五个），应该要去掉，如下图。（孟倩 提供）&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011101909242132.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;&lt;strong&gt;以下为第三次印刷还遗留的错误&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;以下2011-11-09更新&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;3.01 P329，倒数第二行，&amp;ldquo;结点58的左子树高度为2，&amp;rdquo;其中2应该改为3。（&amp;nbsp;&lt;a id="Comments1_CommentList_NameLink_99" href="http://www.cnblogs.com/wormday/" target="_blank"&gt;小墨的童鞋&lt;/a&gt;&amp;nbsp;提供）&lt;/p&gt;&lt;p&gt;3.02 P330★，中间一段，&amp;ldquo;（即它的左子树高度2减去右子树高度0）&amp;rdquo;，应该改为&amp;ldquo;（即它的左子树高度3减去右子树高度1）&amp;rdquo;。然后图8-7-3在结点58的右侧增加一个60的结点，如下图。（&amp;nbsp;&lt;a id="Comments1_CommentList_NameLink_99" href="http://www.cnblogs.com/wormday/" target="_blank"&gt;小墨的童鞋&lt;/a&gt;&amp;nbsp;提供）&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011110909302668.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;以下2011-11-14更新&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;3.03 P194，中间第3条，"第7~8行，whild(p!=T)"，其中"whild"应该改为"while"。（小老k 提供）&lt;/p&gt;&lt;p&gt;3.04 P251 第三行 &amp;ldquo;假设 N=(P,{E}) .....&amp;rdquo; 改为&amp;ldquo;假设 N=(V,{E}) .....&amp;rdquo; （小老k 提供）&lt;/p&gt;&lt;p&gt;&lt;strong&gt;以下2011-11-23更新&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;3.05 P126页第三段倒数第二行，&amp;ldquo;65万&amp;rdquo;改为&amp;ldquo;6.5万&amp;rdquo;（&lt;a title="somebodysssss" href="http://weibo.com/u/1717391950"&gt;somebodysssss&lt;/a&gt;&amp;nbsp;提供）&lt;/p&gt;&lt;p&gt;&lt;strong&gt;以下2011-12-05更新&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;3.06 P351，中间一段，有四处的└m/2┘都应该是 ┌m/2┐，见下图。（&amp;nbsp;&lt;a id="Comments1_CommentList_NameLink_98" target="_blank"&gt;给你改错&lt;/a&gt;&amp;nbsp;提供）&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011120516063591.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;以下2011-12-07更新&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;3.07 P288，第二段第二行，&amp;ldquo;十字链表是邻接矩阵的一种升级，而邻接多重表则是邻接表的升级。&amp;rdquo;，应该改为&amp;ldquo;十字链表是针对有向图邻接表结构的优化，邻接多重表是针对无向图邻接表结构的优化。&amp;rdquo;（韦欢 提供）&lt;/p&gt;&lt;p&gt;&lt;strong&gt;以下2011-12-20更新&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;3.08 （本次改动仅限第三次印刷）P61，代码第三行，"if (!p || j&amp;gt;=i)"，请将&amp;ldquo;=&amp;rdquo;去掉。P63，代码中间一行，，"if (!p || j&amp;gt;=i)"，请将&amp;ldquo;=&amp;rdquo;去掉。P65，代码中间一行，"if (!p || j&amp;gt;=i)"，请将&amp;ldquo;=&amp;rdquo;去掉。（&lt;a id="Comments1_CommentList_NameLink_96" href="http://home.cnblogs.com/u/361995/" rel="nofllow" target="_blank"&gt;kenly2007&lt;/a&gt;&amp;nbsp;提供）&lt;/p&gt;&lt;p&gt;&lt;strong&gt;以下2012-01-09更新&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;3.09 P68 最后一行，"那么应该让这个链表的指针域置空"&amp;nbsp;，其中&amp;ldquo;链表&amp;rdquo;应该改为&amp;ldquo;节点&amp;rdquo;。（落崖惊风 提供）&lt;/p&gt;&lt;p&gt;3.10 P138 最下方的公式，&amp;ldquo;且&amp;lsquo;p1&amp;hellip;&amp;hellip;k-1&amp;rsquo;&amp;rdquo;，在&amp;ldquo;k-1&amp;rdquo;的左侧少了一个"p". （落崖惊风 提供）&lt;/p&gt;&lt;p&gt;&lt;strong&gt;以下2012-02-07更新&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;3.11 P108 倒数第四行最后一句，&amp;ldquo;是右括号或优先级低于&amp;rdquo;，其中&amp;ldquo;低于&amp;rdquo;改为&amp;ldquo;不高于&amp;rdquo;。（王天兴 提供）&lt;/p&gt;&lt;p&gt;3.12 在源代码中栈与队列的DoubleStack.c中的两个问题（目前源代码已经修正，重新下载即可。书中讲解并无错误）：&lt;/p&gt;&lt;p&gt;问题1：&lt;br /&gt;int StackLength(SqDoubleStack S)&lt;br /&gt;{ &lt;br /&gt;return (S.top1+1)+(MAXSIZE-1-S.top2);&lt;br /&gt;}&lt;br /&gt;中的语句return (S.top1+1)+(MAXSIZE-1-S.top2); 应该修改为 return (S.top1+1)+(MAXSIZE-S.top2);&lt;/p&gt;&lt;p&gt;问题2：&lt;br /&gt;Status StackTraverse(SqDoubleStack S)&lt;br /&gt;{&lt;br /&gt;int i;&lt;br /&gt;i=0;&lt;br /&gt;while(i&amp;lt;=S.top1)&lt;br /&gt;{&lt;br /&gt;visit(S.data[i++]);&lt;br /&gt;}&lt;br /&gt;i=S.top2;&lt;br /&gt;while(i&amp;lt;MAXSIZE)&lt;br /&gt;{&lt;br /&gt;visit(S.data[i++]);&lt;br /&gt;}&lt;br /&gt;printf("\n");&lt;br /&gt;return OK;&lt;br /&gt;}&lt;br /&gt;中的语句 while(i&amp;lt;S.top1) 应该修改为 while(i&amp;lt;=S.top1) （闫丰 提供）&lt;/p&gt;&lt;p&gt;&lt;strong&gt;以下2012-02-13更新&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span id="comment_body_2306628" class="blog_comment_body"&gt;3.14 P234 图7-4-10 右下角那句&amp;ldquo;V2后再无V0的入边顶点，所以其taillink为空&amp;rdquo; taillink应该是headlink （&lt;a id="Comments1_CommentList_NameLink_99" href="http://home.cnblogs.com/u/231141/" rel="nofllow" target="_blank"&gt;风碎月&lt;/a&gt;&amp;nbsp;提供）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span class="blog_comment_body"&gt;以下2012-04-12更新&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="blog_comment_body"&gt;4.01 P188，第二段整段删除，即&amp;ldquo;当然，你完全也可以&amp;hellip;&amp;hellip;###DB##CA&amp;rdquo;这一段。原因在于，由于中序遍历不能首先建立根结点，用加&amp;ldquo;#&amp;rdquo;的方法是不可能创建一个二叉树的，后序遍历在特定规则下可以见&lt;a href="http://www.cnblogs.com/cj723/archive/2012/01/09/2316791.html#2372197"&gt;http://www.cnblogs.com/cj723/archive/2012/01/09/2316791.html#2372197&lt;/a&gt;。（猫□咪和&amp;nbsp; &lt;a id="ctl00_CommentList_NameLink_27" href="http://home.cnblogs.com/u/406771/" rel="nofllow" target="_blank"&gt;G-rated&lt;/a&gt; 提供）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;《大话数据结构》第三次印刷已将勘误中的错误修正，预计在2011年12月在各大网上书店中有售。再次向已经购买前两次印刷的读者说一声抱歉，给您要花时间修正错误添麻烦了，当然您们在花费二十多分钟的修改后就能尽早阅读本书，也算是有遗憾后值得欣慰的地方！&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 也希望读者可以理解，本书因为关注度比较高，所以出错后也会影响面比较大。作为作者，本人也有很大压力。其实任何书籍在刚出版时，都会有大大小小的错误，错误原因很多，有些图书没有勘误并不等于没有错误。所以尽管出版本书前，已经做了很大的努力，但还是没有避免错误的发生，现在重要的就是如何弥补错误，不要造成读者的阅读障碍。微软的Windows也需要打补丁，所以希望您可以用类似打补丁的心态去查看勘误修正错误。请您更多关注图书的内容而不是错误本身。谢谢！&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 感谢&lt;a id="Comments1_CommentList_NameLink_12" href="http://home.cnblogs.com/u/314129/" rel="nofllow" target="_blank"&gt;小老K&lt;/a&gt;&amp;nbsp;和&lt;a id="Comments1_CommentList_NameLink_20" href="http://www.cnblogs.com/strider/" target="_blank"&gt;strider&lt;/a&gt;的认真阅读和指正，本人与他们沟通后，决定赠送他们每人一本签名本《大话设计模式》留作纪念。也欢迎其他朋友多多给予指正和建议，只要提交足够多的错误，本人都会考虑给予签名赠书！&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cj723/aggbug/2081574.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cj723/archive/2011/06/26/2081574.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cj723/archive/2011/06/26/2090722.html</id><title type="text">《大話資料結構》繁體中文版勘誤</title><summary type="text">时常更新，请购买图书的读者关注！</summary><published>2011-06-26T09:26:00Z</published><updated>2011-06-26T09:26:00Z</updated><author><name>伍迷</name><uri>http://www.cnblogs.com/cj723/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cj723/archive/2011/06/26/2090722.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cj723/archive/2011/06/26/2090722.html"/><content type="html">&lt;p&gt;盡管已經很仔細的檢查和審核，但錯誤還是沒有能避免。在此向已經購買了本書的讀者誠意地說聲抱歉。現勘誤如下：&lt;/p&gt;&lt;p&gt;第一次印刷：&lt;/p&gt;&lt;p&gt;1.01 P37上方，有一個&amp;ldquo;+&amp;rdquo;號應該是&amp;ldquo;=&amp;rdquo;，見下圖&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011062616585412.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;1.02 P37下方，正確應該是O(n!)，誤將&amp;ldquo;！&amp;rdquo;寫成了上標，見下圖&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011062617034648.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;1.03 P55上方，圖3-5-1，&amp;ldquo;大哥，謝謝您&amp;rdquo;的文字應該指向下方那個小人。見下圖&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011062617075538.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;1.04 P20，代碼中&amp;ldquo;int i,sum =0, n = 100;&amp;rdquo;中的"i,"是多余的，可以刪除，因爲沒有用到i變量。&lt;br /&gt;&amp;nbsp;&lt;br /&gt;1.05 P62，圖3-6-5，左側第三條，&amp;ldquo;頭指針均不爲空&amp;rdquo;應該改爲&amp;ldquo;頭指針均存在&amp;rdquo; 。&lt;br /&gt;&amp;nbsp;&lt;br /&gt;1.06 P62，圖3-6-4和圖3-6-6，兩圖中&amp;ldquo;頭指針&amp;rdquo;改爲&amp;ldquo;後繼指針地址&amp;rdquo;。圖3-6-6，&amp;ldquo;0900&amp;rdquo;應該改爲&amp;ldquo;NULL&amp;rdquo; 。&lt;br /&gt;&amp;nbsp;&lt;br /&gt;1.07 P64，代碼中第6行，&amp;ldquo;/*宣告一結點p*/&amp;rdquo;應該改爲&amp;ldquo;/*宣告一指針p*/&amp;rdquo;。&lt;br /&gt;&amp;nbsp;&lt;br /&gt;1.08 P68，第三行：&amp;ldquo;用來存放e資料s結點。&amp;rdquo;，將&amp;ldquo;e資料s結點"改成&amp;ldquo;資料e的s結點&amp;rdquo; 。&lt;br /&gt;&amp;nbsp;&lt;br /&gt;1.09 P76，第一行，&amp;ldquo;而遊標cur相當于單向鏈結串列中的next指標，存放該元素的後繼者在陣列中的編號。&amp;rdquo;，將&amp;ldquo;遊標&amp;rdquo;兩字刪除，並在句子最後句號前增加一句:&amp;ldquo;，我們把cur叫做遊標。&amp;rdquo;&lt;/p&gt;&lt;p&gt;1.10 P113，最後一段第二行，&amp;ldquo;只有碰到左括號&amp;rdquo;改爲&amp;ldquo;只要碰到左括號&amp;rdquo;。&lt;/p&gt;&lt;p&gt;1.11 P113，最後一段最後一行，&amp;ldquo;而成爲空堆疊的結果。&amp;rdquo;，將&amp;ldquo;的結果&amp;rdquo;刪除。&lt;br /&gt;&amp;nbsp;&lt;br /&gt;1.12 P117，第6條，將第一個句號前的句子與第二個句號前的句子對調。結果爲&amp;ldquo;緊接著是符號"X"，因爲此時的堆疊頂符號&amp;hellip;&amp;hellip;因此不輸出，"*"進堆疊。接著是輸出數字3，總的表達式爲931-3。如圖4-9-8的右圖。&amp;rdquo;&lt;/p&gt;&lt;p&gt;1.13 P149，第四段第一行，&amp;ldquo;假設S="abcabcabc"，&amp;rdquo;，其中的字符串S應該是&amp;ldquo;abcababca&amp;rdquo;。P150圖5-7-4和P151圖5-7-5的第①圖，都應該改爲下圖所示。&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011071023014883.jpg" alt="" width="385" height="130" /&gt;&lt;/p&gt;&lt;p&gt;1.14 P151，倒數第二段第二行，&amp;ldquo;在圖5-7-4中，&amp;rdquo;改爲&amp;ldquo;在圖5-7-5中，&amp;rdquo;。&lt;br /&gt;&amp;nbsp;&lt;br /&gt;1.15 P157，5-7-5小節中第1號小標題中：&amp;ldquo;先計算出next陣列的值分別爲001234223&amp;rdquo;，應改爲&amp;ldquo;011234223&amp;rdquo;。&lt;br /&gt;&amp;nbsp;&lt;br /&gt;1.16 P158，最後一行，"nextval[9]=nextval[3]=1" 最後的&amp;ldquo;1&amp;rdquo;應改爲&amp;ldquo;0&amp;rdquo;。&lt;br /&gt;&amp;nbsp;&lt;br /&gt;1.17 P168，6-4-1小節第二段第二行：&amp;ldquo;其雙親結點到鏈結串列中的位置&amp;rdquo;應改爲&amp;ldquo;其雙親結點在陣列中的位置&amp;rdquo;。&lt;br /&gt;&amp;nbsp;&lt;br /&gt;1.18 P169，表6-4-3的數據第一行 A的firstchild 應該是&amp;ldquo;1&amp;rdquo;不是&amp;ldquo;-1&amp;rdquo;。&lt;/p&gt;&lt;p&gt;1.19 P184，6-6-2 二叉樹特性2的第四段，&amp;ldquo;如果有一階，則至多有1=2&lt;sup&gt;0&lt;/sup&gt;-1個節點&amp;rdquo;，應該是&amp;ldquo;2&lt;sup&gt;1&lt;/sup&gt;-1個節點&amp;rdquo;。&lt;/p&gt;&lt;p&gt;1.20 P165，6-2-3節第一段第三行，&amp;ldquo;而G、H、I、J也是。&amp;rdquo;，應該改爲&amp;ldquo;而G、H、I與J也是堂兄弟。&amp;rdquo;&lt;/p&gt;&lt;p&gt;1.21 P185，6-6-4節第一段第二行，&amp;ldquo;倒推出滿二叉樹的度數爲&amp;rdquo;，其中&amp;ldquo;度數&amp;rdquo;改爲&amp;ldquo;深度&amp;rdquo;，第三行，&amp;ldquo;其度爲4&amp;rdquo;，應該改爲&amp;ldquo;其深度爲4&amp;rdquo;。第三段第一行&amp;ldquo;等于同樣的度數&amp;rdquo;，&amp;ldquo;度數&amp;rdquo;改爲&amp;ldquo;深度&amp;rdquo;；第四行，&amp;ldquo;而k作爲度數也是整數&amp;rdquo;，&amp;ldquo;度數&amp;rdquo;改爲&amp;ldquo;深度&amp;rdquo;；P186，第一行，&amp;ldquo;這是一個完整二叉樹，度爲4&amp;rdquo;，&amp;ldquo;度爲4&amp;rdquo;改爲&amp;ldquo;深度爲4&amp;rdquo;。&lt;/p&gt;&lt;p&gt;1.23 P215，第4~5行 &amp;ldquo;例如圖6-11-4中最右側的樹&amp;rdquo;，將&amp;ldquo;最右側&amp;rdquo;改爲&amp;ldquo;右下方&amp;rdquo;。第10行 &amp;ldquo;如圖6-11-5右側三棵樹所組成的森林&amp;rdquo;，將&amp;ldquo;右側&amp;rdquo;改爲&amp;ldquo;下面&amp;rdquo;。第14行 &amp;ldquo;如圖6-11-5右側三棵樹的森林&amp;rdquo;，&amp;ldquo;右側&amp;rdquo;改爲&amp;ldquo;下面&amp;rdquo;。&lt;/p&gt;&lt;p&gt;1.24 P215，倒數第二段第一行，&amp;ldquo;但如果我們對圖6-11-4的左側二元樹&amp;rdquo;，&amp;ldquo;6-11-4&amp;rdquo;改爲&amp;ldquo;6-11-5&amp;rdquo;。&lt;/p&gt;&lt;p&gt;1.25 P219，第二段第一行，&amp;ldquo;先把這兩棵二元樹簡化成葉子結點加權的二元樹&amp;rdquo;，後面應該加&amp;ldquo;注：樹結點間的邊相關的數叫做權（Weight）&amp;rdquo;。同一行的&amp;ldquo;如圖6-12-5&amp;rdquo;，改爲&amp;ldquo;如圖6-12-4&amp;rdquo;。第三段第二行，&amp;ldquo;圖6-12-5的二元樹a中&amp;rdquo;，其中&amp;ldquo;圖6-12-5&amp;rdquo;改爲&amp;ldquo;圖6-12-4&amp;rdquo;。&lt;/p&gt;&lt;p&gt;1.26 P219，倒數第三行，&amp;ldquo;每個葉子的路徑長度爲lk&amp;rdquo;,其中"lk"應該改爲&amp;ldquo;l&lt;sub&gt;k&lt;/sub&gt;&amp;rdquo;，即k是下標。&lt;/p&gt;&lt;p&gt;1.27 P220，第四段，&amp;ldquo;圖6-12-5的二元樹b這樣的樹&amp;rdquo;，&amp;ldquo;圖6-12-5&amp;rdquo;改爲&amp;ldquo;圖6-12-4&amp;rdquo;。&lt;/p&gt;&lt;p&gt;1.28 P235，第三段第一行，&amp;ldquo;圖7-2-9中的左側&amp;rdquo;，其中&amp;ldquo;左側&amp;rdquo;改爲&amp;ldquo;上方&amp;rdquo;，後面的&amp;ldquo;右側兩條路徑長度爲3&amp;rdquo;，其中&amp;ldquo;右側&amp;rdquo;改爲&amp;ldquo;下方&amp;rdquo;。&lt;/p&gt;&lt;p&gt;1.29 P236，第二行，&amp;ldquo;兩個頂點v&lt;sub&gt;i&lt;/sub&gt;、v&lt;sub&gt;j&lt;/sub&gt;&amp;isin;E，&amp;rdquo;，這裏&amp;ldquo;E&amp;rdquo;應該改成&amp;ldquo;V&amp;rdquo;。&lt;/p&gt;&lt;p&gt;1.30 P237，圖7-2-13的圖1和圖2，頂點A與頂點B之間的箭頭都畫反了。&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011071821250669.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;1.31 P360，圖8-7-9，圖中有錯誤，且圖形過于繁瑣，因此做比較大的修改如下圖&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011072001034539.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;1.32 P267，倒數第五行，&amp;ldquo;arjvex[0]=0&amp;rdquo;,其中&amp;ldquo;arjvex&amp;rdquo;應該爲&amp;ldquo;adjvex&amp;rdquo;。&lt;/p&gt;&lt;p&gt;1.33 P282，第8小節，&amp;ldquo;此時i=2。&amp;rdquo;改成&amp;ldquo;此時v=2。&amp;rdquo;。P283，第11小節，&amp;ldquo;此時i=3。&amp;rdquo;改成&amp;ldquo;此時v=3。&amp;rdquo;&lt;/p&gt;&lt;p&gt;1.34 P280-P281，書中代碼&amp;ldquo;matirx&amp;rdquo;都應該改爲&amp;ldquo;matrix&amp;rdquo;（一共有五處修改，分別是P280代碼第三行，代碼編號的1、8、27、29行）。在提供下載的代碼中，統一將matrix修改成了arc。&lt;/p&gt;&lt;p&gt;1.35 P306，第三行，公式中&amp;ldquo;min{ltv[j]+len&amp;hellip;&amp;hellip;&amp;rdquo;，中&amp;ldquo;+&amp;rdquo;應該是&amp;ldquo;-&amp;rdquo;。&lt;/p&gt;&lt;p&gt;1.36 P85，最下方代碼，在四句代碼第二句與第三句之間，加一句&amp;ldquo;q=rearB-&amp;gt;next; &amp;rdquo;，並修改最後一句的&amp;ldquo;free(p);"爲&amp;ldquo;free(q); /*釋放q*/&amp;rdquo;。&lt;/p&gt;&lt;p&gt;&lt;span style="text-decoration: line-through;"&gt;&lt;span class="blog_comment_body"&gt;1.37 P28，倒數第四行最後，&amp;ldquo;運算100次要比運算10次大100倍&amp;rdquo;，應該是&amp;ldquo;比運算10次大1000倍&amp;rdquo;。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="blog_comment_body"&gt;1.38 P49，union代碼，有不少的問題，修正如下圖。union是C語言的關鍵字，因此函數名增加壹個L。具體實現代碼，請參見源代碼中的&amp;ldquo;01線性表順序存儲_List.c&amp;rdquo;文件&lt;br /&gt;&lt;/span&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011081913210864.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;1.39 P232，圖7-2-6，頂點B與頂點D缺少兩根互為反向的連線。因為有向完全圖的定義是任意兩個頂點之間都存在方向互為相反的兩條弧。&lt;/p&gt;&lt;p&gt;1.40 P266。圖7-6-3中鄰接矩陣有些錯誤。 arc[v2][v1]應該是18， arc[v3][v6]和arc[v6][v3]都應該是24。&lt;/p&gt;&lt;p&gt;1.41 P351，圖8-7-2，圖1，刪除葉子結點35和結點99。&lt;/p&gt;&lt;p&gt;1.42 P305&amp;nbsp; 第6小節，&amp;ldquo;ltv相對應的值為19、25、13&amp;rdquo;，三個數字的順序應該是&amp;ldquo;19、13、25&amp;rdquo;。&lt;/p&gt;&lt;p&gt;1.43 P353，倒數第七行，&amp;ldquo;平衡因子沒有發生改變&amp;rdquo;，改為&amp;ldquo;平衡因子沒有超出限定範圍（-1，0，1）&amp;rdquo;。&lt;/p&gt;&lt;p&gt;1.44 P356，圖8-7-8中的圖15中結點7的BF值應該是-2而不是-1。&lt;/p&gt;&lt;p&gt;1.45 P369，情形二的第二行，&amp;ldquo;此時刪除結點1&amp;rdquo;，修改為&amp;ldquo;此時刪除結點4&amp;rdquo;。&lt;/p&gt;&lt;p&gt;1.46 P399，第三段加粗字中第三行，&amp;ldquo;（非遞減或非遞增）關系&amp;rdquo;，修改為&amp;ldquo;非遞減（或非遞增）關系&amp;rdquo;。&lt;/p&gt;&lt;p&gt;1.47 P80，倒數第三行，&amp;ldquo;j=k[999].cur=1",應該將&amp;ldquo;k"修改為&amp;ldquo;L&amp;rdquo;。&lt;/p&gt;&lt;p&gt;1.48 P412，倒數第二行 &amp;ldquo;L.r[j-1]=L.r[j] &amp;rdquo;，其中減號應該是加號，即&amp;ldquo;L.r[j+1]=L.r[j]&amp;rdquo;&amp;nbsp; 。&lt;/p&gt;&lt;p&gt;1.49 P340，代碼下方第壹行，"InsertBST(T,93);"應該是"InsertBST(&amp;amp;T,93);"，下面壹行，"InsertBST(T,95);"應該是"InsertBST(&amp;amp;T,95);"&lt;/p&gt;&lt;p&gt;1.50 P425，中間壹段，堆排序定義的最後壹行，&amp;ldquo;n個元素中的次小值&amp;rdquo;，其中&amp;ldquo;次小&amp;rdquo;應該改為&amp;ldquo;次大&amp;rdquo;。&lt;/p&gt;&lt;p&gt;1.51 P253，圖7-4-10，V1點的陰影應該改為V2 ，修改結果見下圖&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;&lt;span class="blog_comment_body"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011100815192988.png" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;1.52 P351，最後壹段倒數第二行&amp;ldquo;（即它的左子樹高度2減去右子樹高度0）&amp;rdquo;，其中2應該改為3。P352，圖8-7-2的結點58左上角那個小2，也需要改成3。&lt;/p&gt;&lt;p&gt;1.53 P361，代碼第22行，"if (taller)"，應該改為"if (*taller)"。本書提供的源代碼也有相同錯誤，已經做了修改。&lt;/p&gt;&lt;p&gt;1.54 P171，圖6-4-2，每個結點末尾都多畫了壹個指針域（即應該有四個方格卻畫了五個），應該要去掉，如下圖。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011101909242132.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;1.55 P209，第7行，&amp;ldquo;3.第7~8行，whild(&amp;rdquo;，當中&amp;ldquo;whild&amp;rdquo;應該是&amp;ldquo;while&amp;rdquo;。&lt;/p&gt;&lt;p&gt;1.56 P270，第2行，&amp;ldquo;假設N=(P,{E})&amp;rdquo;其中&amp;ldquo;P&amp;rdquo;應該是&amp;ldquo;V&amp;rdquo;&lt;/p&gt;&lt;p&gt;1.57 P136，倒數第2行，&amp;ldquo;約是65萬多個字元&amp;rdquo;，其中&amp;ldquo;65&amp;rdquo;應該是&amp;ldquo;6.5&amp;rdquo;&lt;/p&gt;&lt;p&gt;1.58 P308，最後壹行，&amp;ldquo;十字鏈結串列是鄰接矩陣的一種升級版，而鄰接多重鏈結串列則是鄰接串列的升級版。&amp;rdquo;，應該改爲&amp;ldquo;十字鏈結串列是針對有向圖鄰結串列結構的優化，鄰接多重鏈結串列是針對無向圖鄰結串列結構的優化。&amp;rdquo;&lt;/p&gt;&lt;p&gt;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 《大話數據結構》出版後，發現了不少錯誤，給購買書的讀者帶來了困擾，我非常抱歉，我現在能做的就是最及時的發布勘誤信息，以避免誤導讀者。目前已經與出版社溝通過，在第二次印刷時，會將勘誤中的錯誤修正，如果很在意不要出現錯誤信息的朋友，不妨等待兩三個月後再購買，相信書籍質量會好很多。再次向已經購買的讀者說壹聲抱歉，給您要花時間修正錯誤添麻煩了，當然您們在花費十多分鐘的修改後就能盡早閱讀本書，也算是有遺憾後值得欣慰的地方！&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 也希望讀者可以理解，本書因為關註度比較高，所以出錯後也會影響面比較大。作為作者，本人也有很大壓力。其實任何書籍在剛出版時，都會有大大小小的錯誤，錯誤原因很多，有些圖書沒有勘誤並不等於沒有錯誤。所以盡管出版本書前，已經做了很大的努力，但還是沒有避免錯誤的發生，現在重要的就是如何彌補錯誤，不要造成讀者的閱讀障礙。微軟的Windows也需要打補丁，所以希望您可以用類似打補丁的心態去查看勘誤修正錯誤。請您更多關註圖書的內容而不是錯誤本身。謝謝！&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cj723/aggbug/2090722.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cj723/archive/2011/06/26/2090722.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cj723/archive/2011/06/03/2071202.html</id><title type="text">《大话数据结构》目录</title><summary type="text">由于目录中有比较复杂的格式，所以只能用PDF的形式提供。http://files.cnblogs.com/cj723/%E7%9B%AE%E5%BD%95.pdf</summary><published>2011-06-03T03:59:00Z</published><updated>2011-06-03T03:59:00Z</updated><author><name>伍迷</name><uri>http://www.cnblogs.com/cj723/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cj723/archive/2011/06/03/2071202.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cj723/archive/2011/06/03/2071202.html"/><content type="html">&lt;p&gt;由于目录中有比较复杂的格式，所以只能用PDF的形式提供。&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" href="http://files.cnblogs.com/cj723/%E7%9B%AE%E5%BD%95.pdf"&gt;http://files.cnblogs.com/cj723/%E7%9B%AE%E5%BD%95.pdf&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cj723/aggbug/2071202.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cj723/archive/2011/06/03/2071202.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
