<?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-02-07T02:33:32Z</updated><author><name>伍迷</name><uri>http://www.cnblogs.com/cj723/</uri></author><generator>CNBlogs BlogServer</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/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;&#xD;
&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;&#xD;
&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;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011110909302668.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;以下2011-11-14更新&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3.03 P194，中间第3条，"第7~8行，whild(p!=T)"，其中"whild"应该改为"while"。（小老k 提供）&lt;/p&gt;&#xD;
&lt;p&gt;3.04 P251 第三行 &amp;ldquo;假设 N=(P,{E}) .....&amp;rdquo; 改为&amp;ldquo;假设 N=(V,{E}) .....&amp;rdquo; （小老k 提供）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;以下2011-11-23更新&lt;/strong&gt;&lt;/p&gt;&#xD;
&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;&#xD;
&lt;p&gt;&lt;strong&gt;以下2011-12-05更新&lt;/strong&gt;&lt;/p&gt;&#xD;
&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;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011120516063591.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;以下2011-12-07更新&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3.07 P288，第二段第二行，&amp;ldquo;十字链表是邻接矩阵的一种升级，而邻接多重表则是邻接表的升级。&amp;rdquo;，应该改为&amp;ldquo;十字链表是针对有向图邻接表结构的优化，邻接多重表是针对无向图邻接表结构的优化。&amp;rdquo;（韦欢 提供）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;以下2011-12-20更新&lt;/strong&gt;&lt;/p&gt;&#xD;
&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;&#xD;
&lt;p&gt;&lt;strong&gt;以下2012-01-09更新&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3.09 P68 最后一行，"那么应该让这个链表的指针域置空"&amp;nbsp;，其中&amp;ldquo;链表&amp;rdquo;应该改为&amp;ldquo;节点&amp;rdquo;。（落崖惊风 提供&lt;em &gt;&lt;/em&gt;）&lt;/p&gt;&#xD;
&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;em &gt;&lt;/em&gt;）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;以下2012-02-07更新&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3.11 P108 倒数第四行最后一句，&amp;ldquo;是右括号或优先级低于&amp;rdquo;，其中&amp;ldquo;低于&amp;rdquo;改为&amp;ldquo;不高于&amp;rdquo;。（王天兴 提供）&lt;/p&gt;&#xD;
&lt;p&gt;3.12 在源代码中栈与队列的DoubleStack.c中的两个问题（目前源代码已经修正，重新下载即可。书中讲解并无错误）：&lt;/p&gt;&#xD;
&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;&#xD;
&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;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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&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;各位童鞋，﻿《大话数据结构》从写作到出版，虽然经历了一些坎坷，但终于还是在今天正式在一些网店发售了。现在提供两章的完整版试读PDF文件，希望能给您有所收获，并欢迎给出批评指正意见。&lt;/p&gt;&#xD;
&lt;p&gt;本应该直接贴出正文，但考虑到图片过多和排版格式较为复杂，为了能够原汁原味的体现原书风貌，所以就提供PDF文档阅读。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;样章试读&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&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;&#xD;
&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;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;&lt;strong&gt;﻿﻿相关信息&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&lt;li&gt;&lt;a target="_blank" href="http://files.cnblogs.com/cj723/PlayWithDataStructureSourceCode.zip"&gt;源代码下载&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;&lt;a target="_blank" href="http://product.china-pub.com/193995"&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&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;尽管已经很仔细的检查和审核，但错误还是没有能避免。以下的错误，有些是作者的笔误或者表述不清，有些是编辑审稿时不理解造成的错误，有些是美编改图时的错误，有些是印刷厂印刷时的错误。虽然出错的原因很多，但总的来说都会给读者阅读时造成困扰，所以再次向读者说一声对不起！并&lt;strong&gt;请读者时常关注本博文&lt;/strong&gt;，以便可以获得最新的勘误信息。现勘误如下：&lt;/p&gt;&#xD;
&lt;p&gt;注：★★★、★★和★为建议马上修改，它们之间程度不同，没有星为可改可不改，不影响阅读。&lt;/p&gt;&#xD;
&lt;p&gt;第一次印刷：&lt;/p&gt;&#xD;
&lt;p&gt;1.01★ P38，倒数第二行，&amp;ldquo;速度其实只提高了10&amp;rdquo;，后面增加一个&amp;ldquo;倍&amp;rdquo;字。&lt;/p&gt;&#xD;
&lt;p&gt;1.02 P111，第三段，第二行，&amp;ldquo;打算了Reset时&amp;rdquo;，多了一个&amp;ldquo;了&amp;rdquo;字。目录P15，同样的问题。&lt;/p&gt;&#xD;
&lt;p&gt;1.03★★★ P268，P269，图7-7-14，图7-7-15，图7-7-16横竖条中都是有符号或数字的，目前因印刷问题没有显示。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011062616503794.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011062616513781.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011062616514951.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1.04 P377 &amp;ldquo;时间性能&amp;rdquo;这一段中 "事实上，移动可以通过改为记录的存储方式来予以避免" ，其中&amp;ldquo;改为&amp;rdquo;应该是&amp;ldquo;改变&amp;rdquo;&lt;/p&gt;&#xD;
&lt;p&gt;1.05★★ P35，第一行，有一个&amp;ldquo;+&amp;rdquo;号应该是&amp;ldquo;=&amp;rdquo;，见下图&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011062616442986.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;第二次印刷：&lt;/p&gt;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&lt;p&gt;2.06 P60，代码中第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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011071023014883.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&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;&#xD;
&lt;p&gt;2.15★ &lt;span id="comment_body_2148315" &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;&#xD;
&lt;p&gt;2.16★ &lt;span id="comment_body_2148322" &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;&#xD;
&lt;p&gt;&lt;span &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;&#xD;
&lt;p&gt;2.18 &lt;span id="comment_body_2148334" &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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011071821250669.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2.31★★★ P338，图8-7-10，图中有小错误，且图形过于繁琐，不利于读者理解，因此做比较大的修改如下图。（康凯 提供）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011072001034539.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&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;&#xD;
&lt;p&gt;&lt;span id="comment_body_2157523" &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;&#xD;
&lt;p&gt;&lt;span &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;&#xD;
&lt;p&gt;&lt;span &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;&#xD;
&lt;p&gt;&lt;span &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;&#xD;
&lt;p&gt;&lt;span &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;&#xD;
&lt;p&gt;&lt;span &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;&#xD;
&lt;p&gt;&lt;span style="text-decoration: line-through;"&gt;&lt;span &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 &gt;（&lt;/span&gt;&lt;span &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;&#xD;
&lt;p&gt;&lt;span &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;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011081913210864.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2.41 P59，倒数第五行，&amp;ldquo;结点由存放数据元素的数据域&amp;rdquo;后面加一个&amp;ldquo;和&amp;rdquo;字。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;以下2011-8-23更新&lt;/strong&gt;&lt;/p&gt;&#xD;
&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;&#xD;
&lt;p&gt;2.43★ &lt;span id="comment_body_2182104" &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;&#xD;
&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;&#xD;
&lt;p&gt;&lt;strong&gt;以下2011-8-25更新&lt;/strong&gt;&lt;/p&gt;&#xD;
&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;&#xD;
&lt;p&gt;2.46 &lt;span id="comment_body_2184588" &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;&#xD;
&lt;p&gt;&lt;span &gt;2.47★ &lt;span id="comment_body_2184624" &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;&#xD;
&lt;p&gt;&lt;span &gt;&lt;span &gt;2.48★ &lt;span id="comment_body_2185553" &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;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span &gt;&lt;span &gt;&lt;span &gt;以下2011-8-30更新&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span &gt;&lt;span &gt;&lt;span &gt;&lt;span id="comment_body_2187830" &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;&#xD;
&lt;p&gt;&lt;span &gt;&lt;span &gt;&lt;span &gt;&lt;strong&gt;&lt;span &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;&#xD;
&lt;p&gt;&lt;span &gt;&lt;span &gt;&lt;span &gt;2.51★ &lt;span id="comment_body_2189556" &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;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span &gt;&lt;span &gt;&lt;span &gt;&lt;span &gt;以下2011-9-2更新&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span &gt;&lt;span &gt;&lt;span &gt;&lt;span &gt;2.52 &lt;span id="comment_body_2190311" &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;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span &gt;&lt;span &gt;&lt;span &gt;&lt;span &gt;以下2011-9-7更新&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span &gt;&lt;span &gt;&lt;span &gt;&lt;span &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;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span &gt;&lt;span &gt;&lt;span &gt;&lt;span &gt;以下2011-9-21更新&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span &gt;&lt;span &gt;&lt;span &gt;&lt;span &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;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span &gt;&lt;span &gt;&lt;span &gt;&lt;span &gt;以下2011-10-8更新&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span &gt;&lt;span &gt;&lt;span &gt;&lt;span &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;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011100815192988.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;以下2011-10-18更新&lt;/strong&gt;&lt;/p&gt;&#xD;
&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;&#xD;
&lt;p&gt;2.57 P158，图6-4-2，每个结点末尾都多画了一个指针域（即应该有四个方格却画了五个），应该要去掉，如下图。（孟倩 提供）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011101909242132.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;&lt;strong&gt;以下为第三次印刷还遗留的错误&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;以下2011-11-09更新&lt;/strong&gt;&lt;/p&gt;&#xD;
&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;&#xD;
&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;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011110909302668.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;以下2011-11-14更新&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3.03 P194，中间第3条，"第7~8行，whild(p!=T)"，其中"whild"应该改为"while"。（小老k 提供）&lt;/p&gt;&#xD;
&lt;p&gt;3.04 P251 第三行 &amp;ldquo;假设 N=(P,{E}) .....&amp;rdquo; 改为&amp;ldquo;假设 N=(V,{E}) .....&amp;rdquo; （小老k 提供）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;以下2011-11-23更新&lt;/strong&gt;&lt;/p&gt;&#xD;
&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;&#xD;
&lt;p&gt;&lt;strong&gt;以下2011-12-05更新&lt;/strong&gt;&lt;/p&gt;&#xD;
&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;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011120516063591.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;以下2011-12-07更新&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3.07 P288，第二段第二行，&amp;ldquo;十字链表是邻接矩阵的一种升级，而邻接多重表则是邻接表的升级。&amp;rdquo;，应该改为&amp;ldquo;十字链表是针对有向图邻接表结构的优化，邻接多重表是针对无向图邻接表结构的优化。&amp;rdquo;（韦欢 提供）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;以下2011-12-20更新&lt;/strong&gt;&lt;/p&gt;&#xD;
&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;&#xD;
&lt;p&gt;&lt;strong&gt;以下2012-01-09更新&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3.09 P68 最后一行，"那么应该让这个链表的指针域置空"&amp;nbsp;，其中&amp;ldquo;链表&amp;rdquo;应该改为&amp;ldquo;节点&amp;rdquo;。（落崖惊风 提供&lt;em &gt;&lt;/em&gt;）&lt;/p&gt;&#xD;
&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;em &gt;&lt;/em&gt;）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;以下2012-02-07更新&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3.11 P108 倒数第四行最后一句，&amp;ldquo;是右括号或优先级低于&amp;rdquo;，其中&amp;ldquo;低于&amp;rdquo;改为&amp;ldquo;不高于&amp;rdquo;。（王天兴 提供）&lt;/p&gt;&#xD;
&lt;p&gt;3.12 在源代码中栈与队列的DoubleStack.c中的两个问题（目前源代码已经修正，重新下载即可。书中讲解并无错误）：&lt;/p&gt;&#xD;
&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;&#xD;
&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;&#xD;
&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;&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;&#xD;
&lt;p&gt;《大话数据结构》第三次印刷已将勘误中的错误修正，预计在2011年12月在各大网上书店中有售。再次向已经购买前两次印刷的读者说一声抱歉，给您要花时间修正错误添麻烦了，当然您们在花费二十多分钟的修改后就能尽早阅读本书，也算是有遗憾后值得欣慰的地方！&lt;/p&gt;&#xD;
&lt;p style="text-align: left;"&gt;也希望读者可以理解，本书因为关注度比较高，所以出错后也会影响面比较大。作为作者，本人也有很大压力。其实任何书籍在刚出版时，都会有大大小小的错误，错误原因很多，有些图书没有勘误并不等于没有错误。所以尽管出版本书前，已经做了很大的努力，但还是没有避免错误的发生，现在重要的就是如何弥补错误，不要造成读者的阅读障碍。微软的Windows也需要打补丁，所以希望您可以用类似打补丁的心态去查看勘误修正错误。请您更多关注图书的内容而不是错误本身。谢谢！&lt;/p&gt;&#xD;
&lt;p&gt;感谢&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;&#xD;
&lt;p&gt;第一次印刷：&lt;/p&gt;&#xD;
&lt;p&gt;1.01 P37上方，有一個&amp;ldquo;+&amp;rdquo;號應該是&amp;ldquo;=&amp;rdquo;，見下圖&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011062616585412.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1.02 P37下方，正確應該是O(n!)，誤將&amp;ldquo;！&amp;rdquo;寫成了上標，見下圖&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011062617034648.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1.03 P55上方，圖3-5-1，&amp;ldquo;大哥，謝謝您&amp;rdquo;的文字應該指向下方那個小人。見下圖&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011062617075538.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&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;&#xD;
&lt;p&gt;1.10 P113，最後一段第二行，&amp;ldquo;只有碰到左括號&amp;rdquo;改爲&amp;ldquo;只要碰到左括號&amp;rdquo;。&lt;/p&gt;&#xD;
&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;&#xD;
&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;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011071023014883.jpg" alt="" width="385" height="130" /&gt;&lt;/p&gt;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&lt;p&gt;1.30 P237，圖7-2-13的圖1和圖2，頂點A與頂點B之間的箭頭都畫反了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011071821250669.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1.31 P360，圖8-7-9，圖中有錯誤，且圖形過于繁瑣，因此做比較大的修改如下圖&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011072001034539.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&lt;p&gt;&lt;span style="text-decoration: line-through;"&gt;&lt;span &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;&#xD;
&lt;p&gt;&lt;span &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;&#xD;
&lt;p&gt;1.39 P232，圖7-2-6，頂點B與頂點D缺少兩根互為反向的連線。因為有向完全圖的定義是任意兩個頂點之間都存在方向互為相反的兩條弧。&lt;/p&gt;&#xD;
&lt;p&gt;1.40 P266。圖7-6-3中鄰接矩陣有些錯誤。 arc[v2][v1]應該是18， arc[v3][v6]和arc[v6][v3]都應該是24。&lt;/p&gt;&#xD;
&lt;p&gt;1.41 P351，圖8-7-2，圖1，刪除葉子結點35和結點99。&lt;/p&gt;&#xD;
&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;&#xD;
&lt;p&gt;1.43 P353，倒數第七行，&amp;ldquo;平衡因子沒有發生改變&amp;rdquo;，改為&amp;ldquo;平衡因子沒有超出限定範圍（-1，0，1）&amp;rdquo;。&lt;/p&gt;&#xD;
&lt;p&gt;1.44 P356，圖8-7-8中的圖15中結點7的BF值應該是-2而不是-1。&lt;/p&gt;&#xD;
&lt;p&gt;1.45 P369，情形二的第二行，&amp;ldquo;此時刪除結點1&amp;rdquo;，修改為&amp;ldquo;此時刪除結點4&amp;rdquo;。&lt;/p&gt;&#xD;
&lt;p&gt;1.46 P399，第三段加粗字中第三行，&amp;ldquo;（非遞減或非遞增）關系&amp;rdquo;，修改為&amp;ldquo;非遞減（或非遞增）關系&amp;rdquo;。&lt;/p&gt;&#xD;
&lt;p&gt;1.47 P80，倒數第三行，&amp;ldquo;j=k[999].cur=1",應該將&amp;ldquo;k"修改為&amp;ldquo;L&amp;rdquo;。&lt;/p&gt;&#xD;
&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;&#xD;
&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;&#xD;
&lt;p&gt;1.50 P425，中間壹段，堆排序定義的最後壹行，&amp;ldquo;n個元素中的次小值&amp;rdquo;，其中&amp;ldquo;次小&amp;rdquo;應該改為&amp;ldquo;次大&amp;rdquo;。&lt;/p&gt;&#xD;
&lt;p&gt;1.51 P235，圖7-4-10，V1點的陰影應該改為V2 ，修改結果見下圖&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span &gt;&lt;span &gt;&lt;span &gt;&lt;span &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;&#xD;
&lt;p&gt;1.52 P351，最後壹段倒數第二行&amp;ldquo;（即它的左子樹高度2減去右子樹高度0）&amp;rdquo;，其中2應該改為3。P352，圖8-7-2的結點58左上角那個小2，也需要改成3。&lt;/p&gt;&#xD;
&lt;p&gt;1.53 P361，代碼第22行，"if (taller)"，應該改為"if (*taller)"。本書提供的源代碼也有相同錯誤，已經做了修改。&lt;/p&gt;&#xD;
&lt;p&gt;1.54 P171，圖6-4-2，每個結點末尾都多畫了壹個指針域（即應該有四個方格卻畫了五個），應該要去掉，如下圖。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011101909242132.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&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;&#xD;
&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;&#xD;
&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;&#xD;
&lt;p&gt;1.58 P308，最後壹行，&amp;ldquo;十字鏈結串列是鄰接矩陣的一種升級版，而鄰接多重鏈結串列則是鄰接串列的升級版。&amp;rdquo;，應該改爲&amp;ldquo;十字鏈結串列是針對有向圖鄰結串列結構的優化，鄰接多重鏈結串列是針對無向圖鄰結串列結構的優化。&amp;rdquo;&lt;/p&gt;&#xD;
&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;&#xD;
&lt;p&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 《大話數據結構》出版後，發現了不少錯誤，給購買書的讀者帶來了困擾，我非常抱歉，我現在能做的就是最及時的發布勘誤信息，以避免誤導讀者。目前已經與出版社溝通過，在第二次印刷時，會將勘誤中的錯誤修正，如果很在意不要出現錯誤信息的朋友，不妨等待兩三個月後再購買，相信書籍質量會好很多。再次向已經購買的讀者說壹聲抱歉，給您要花時間修正錯誤添麻煩了，當然您們在花費十多分鐘的修改後就能盡早閱讀本書，也算是有遺憾後值得欣慰的地方！&lt;/p&gt;&#xD;
&lt;p&gt;也希望讀者可以理解，本書因為關註度比較高，所以出錯後也會影響面比較大。作為作者，本人也有很大壓力。其實任何書籍在剛出版時，都會有大大小小的錯誤，錯誤原因很多，有些圖書沒有勘誤並不等於沒有錯誤。所以盡管出版本書前，已經做了很大的努力，但還是沒有避免錯誤的發生，現在重要的就是如何彌補錯誤，不要造成讀者的閱讀障礙。微軟的Windows也需要打補丁，所以希望您可以用類似打補丁的心態去查看勘誤修正錯誤。請您更多關註圖書的內容而不是錯誤本身。謝謝！&lt;/p&gt;&#xD;
&lt;p&gt;&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;&#xD;
&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><entry><id>http://www.cnblogs.com/cj723/archive/2011/06/01/2065564.html</id><title type="text">《大话数据结构》前言</title><summary type="text">前 言本书起因 大家好！我是《大话设计模式》（2008年初出版）的作者，三年来，承蒙广大读者的厚爱，《大话设计模式》取得了较大的成功。仅在当当网，截止本文写作时，就已经有1073次评论，705次5星评价，位居五星图书榜计算机/网络类的累计总榜第二名。此书已经成为国内原创计算机类图书最畅销的书籍之一。 对于这样一个自己喜欢做、可以做得好，而且已经得到了市场广泛认可，为很多朋友提供帮助的事情，我没有理由不去继续做下去。这就是我准备再写书的原因。 我曾做过调查，数据结构的学习者大多都有这样的感慨：数据结构很重要，一定要学好，但数据结构比较抽象，有些算法理解起来很困难，学得很累。可我更希望传达这样的信</summary><published>2011-06-01T03:10:00Z</published><updated>2011-06-01T03:10: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/01/2065564.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cj723/archive/2011/06/01/2065564.html"/><content type="html">&lt;h2 align="center"&gt;前 言&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;本书起因&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p &gt;大家好！我是《大话设计模式》（2008年初出版）的作者，三年来，承蒙广大读者的厚爱，《大话设计模式》取得了较大的成功。仅在当当网，截止本文写作时，就已经有1073次评论，705次5星评价，位居五星图书榜计算机/网络类的累计总榜第二名。此书已经成为国内原创计算机类图书最畅销的书籍之一。&lt;/p&gt;&#xD;
&lt;p &gt;对于这样一个自己喜欢做、可以做得好，而且已经得到了市场广泛认可，为很多朋友提供帮助的事情，我没有理由不去继续做下去。这就是我准备再写书的原因。&lt;/p&gt;&#xD;
&lt;p &gt;我曾做过调查，数据结构的学习者大多都有这样的感慨：数据结构很重要，一定要学好，但数据结构比较抽象，有些算法理解起来很困难，学得很累。可我更希望传达这样的信息：数据结构非常有趣，很多算法是智慧的结晶，学习它是去感受计算机编程技术的魅力，在理解掌握它的同时，整个过程都是一种愉悦的精神感受，而非枯燥乏味的一门课程。因此我决定写作一本关于数据结构有趣的书。&lt;/p&gt;&#xD;
&lt;p &gt;不过现实总比理想来得更&amp;ldquo;现实&amp;rdquo;。要想把书写好，谈何容易，我需要突破很多困难&amp;hellip;&amp;hellip;嗐！不管如何，现在您看到了本书，那就说明我已经克服了困难战胜了自己。希望您可以喜欢上这本书。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;本书定位&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p &gt;本书的定位就是一本适合读者自学数据结构的书籍，它有区别于教材，希望给大家另一种阅读体验。&lt;/p&gt;&#xD;
&lt;p &gt;通常讲解数据结构的图书都是以教材的方式呈现。在写作前，我购买或在图书馆借阅了十几本非常好的数据结构相关教材用来为写作本书做准备。但经过认真阅读后，我发现，它们大多不是一本好的&amp;ldquo;自学读物&amp;rdquo;。&lt;/p&gt;&#xD;
&lt;p &gt;我没有轻视这些好书的意思，不过教材和自学读物，所面向的读者是完全不同的。&lt;/p&gt;&#xD;
&lt;p &gt;好的教材应该是提纲挈领、重点突出，一定要留出思考的空间，否则就没必要再听老师上课了。很多内容的讲&lt;st1:personname productid="解是由"&gt;解是由&lt;/st1:personname&gt;老师在课堂完成，教材中有练习、课后习题、思考题等，这些大多可以&lt;st1:personname productid="通过"&gt;通过&lt;/st1:personname&gt;老师来解答。比如我们中学时的语文、数学课本，很薄的一本书通常要用一学期、甚至一年的时间来学习，这就是因为它们是教材而不是自学读物。如果是小说，可能一两天就读完了。&lt;/p&gt;&#xD;
&lt;p &gt;好的自学读物的目标是让初学者&amp;ldquo;独自&amp;rdquo;全盘掌握知识，需要强调&amp;ldquo;独自&amp;rdquo;一词，这就说明读者在阅读时，是完全依靠自己的力量来向未知发出挑战。因此书中内容，要么不写，写了就应该写透。如果读者在阅读时总是疑惑重重，那么这本书就有很大的问题了。&lt;/p&gt;&#xD;
&lt;p &gt;我也就是在基于这样的认识，决心将《大话数据结构》真正写成一本关于数据结构和算法的自学读物来展开写作的。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;本书特色&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p &gt;1．趣味引导&lt;/p&gt;&#xD;
&lt;p &gt;大部分的编程类图书，在内容上基本都是直奔主题。但是尼采曾说过：&amp;ldquo;人们无法理解他没有经历过的事情。&amp;rdquo;换句话说，我们只接受过去早已理解的事物相关的信息。这是一种比较学习过程，在这个过程中，大脑寻找每条信息之间的联系。所以教育专家普遍认为，吸引学生的注意力，比较好的办法是用他们比较熟知的知识开始。&lt;/p&gt;&#xD;
&lt;p &gt;因此在本书中，我会用一个故事、一个趣味题目、一部电影的介绍等形式来作为每一章甚至很多小节的开头，选择的内容也多多少少与要讲的主题内容相关。这并不是多余，而是有意为之。事实上，这样的形式在我的前一本书中已经得到了普遍认可。&lt;/p&gt;&#xD;
&lt;p &gt;2．图文并茂&lt;/p&gt;&#xD;
&lt;p &gt;西方有句谚语，&amp;ldquo;A picture is worth a thousand words.（一图值千言）&amp;rdquo;。用上千个字描述不明白的东西，很可能一张图就能解释清楚。&lt;/p&gt;&#xD;
&lt;p &gt;我非常认可这个观点，所以本书虽没有达到每一页都有图，但基本做到了绝大部分讲解都有相关图示，关键算法更是通过多图逐步分解剖析。尽管这带来了写作上的难度，但却可以达到较好的效果。毕竟，读者通过本书开始学习数据结构时，要从一无所知或略知一二到完全理解，甚至掌握应用，是需要一个比较艰苦的过程，用大量的图示可以减少这个过程的长度。&lt;/p&gt;&#xD;
&lt;p &gt;3．代码详解&lt;/p&gt;&#xD;
&lt;p &gt;我在写作中尽量摒弃了传统数据结构教材的&amp;ldquo;重理论思想而轻代码讲解&amp;rdquo;的作法。在准备数据结构写作时我发现，很多教材对数据结构理论和算法设计思想讲得比较好，可一到实际代码时，有的把代码贴出来加少量注释，有的直接用伪代码形式。这对于上课的学生还好，&lt;st1:personname productid="毕竟有"&gt;毕竟有&lt;/st1:personname&gt;老师在课堂中去详解代码编写原理，可是对于初学数据结构和算法的自学者而言，如果书中不去解释代码某些细节为什么那样编写的原因，甚至代码根本不可能在某个编译器中运行通过，其挫折感是很强烈的。比如即使理解了图结构中的最短路径求解原理，也可能无法写出最短路径的算法。&lt;/p&gt;&#xD;
&lt;p &gt;我把代码在运行过程中变量的变化融入到整个算法设计思想的讲解中，配合相应的示意图，会帮助大家更加容易理解算法的实质。这种讲解模式在本书的第6、7、8、9章的很多复杂算法中有具体体现，越是复杂的代码越是讲解细致。这算是本书的一个特色，希望对读者有帮助。&lt;/p&gt;&#xD;
&lt;p &gt;4．形式新颖&lt;/p&gt;&#xD;
&lt;p &gt;我把本书的内容虚构成了一个老师上课的场景，所有内容都通过这位老师表达出来，书中的文字非常口语化，这样做的目的是为了更加直观地让读者感觉，自己是在学习，是在上课。有人可能会说，现在的课堂大都是让人昏昏欲睡，把读者带入上课场景，不是更加让读者犯困吗？我觉得如果你的学习经历中听过一些优秀老师的课，你就不会下这样的结论。好的老师讲课，是可以做到引人入胜的。&lt;/p&gt;&#xD;
&lt;p &gt;有人可能会问，我为什么不用《大话设计模式》中的对话形式，而采用讲课形式呢？这是对数据结构这门学问的特点考虑的。设计模式主要都是思想体现，通常会仁者见仁、智者见智，用对话展开比较容易；而数据结构中更多的是定义、术语、经典算法等，这些公认的知识，可讨论的地方并不多，更多的是需要把它讲清楚。让两个人在一起讨论某个设计模式的优缺点，会非常合适，而讨论数据结构定义的好坏，就没有太大意义了，不如让一个老师告诉学生数据结构的定义好在哪里更符合实际。因此用传统的讲课形式会好一些。&lt;/p&gt;&#xD;
&lt;p &gt;另外，本书没有习题，有思考的题目也一定会给出某种答案。但本书每个复杂知识点的末尾，都会提供另一本书的进一步阅读建议。这也是基于它是一本自学读物的原则。读者阅读本书可能是任何时间任何地方，如果书中存在没有解答的习题，碰到了困难是没法及&lt;st1:personname productid="时找到"&gt;时找到&lt;/st1:personname&gt;老师来帮助的，因此本书尽量避免让读者有这样的困惑存在。如果需要练习的同学，我觉得还是应该考虑再去买本习题集来学习。学习数据结构和算法，做题和上机写代码非常有必要，从这个角度也说明，阅读完本书其实也只是完成入门而已。&lt;/p&gt;&#xD;
&lt;p &gt;本书既然是以老师上课的形式来进行，那就免不了要融入一名教师除了授业解惑以外，还要传达一些个人价值观的体现。书中很多细微处，如对某位科学家的尊敬、对某个算法的推崇、对勤奋励志故事的讲述等都在表达着一个老师向学生传递真、善、美的意愿。我始终认为，读者拿到的虽然只是一本没有表情、不会说话的书，但其实也是在隔空与另一个朋友交流。人与人的交流不可能只是就事论事，一定会有情感的沟通，这种情感如果能产生共鸣、达成互信，就会让事情（比如学习数据结构与算法这件事）本身更容易理解和接受。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;本书内容&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p &gt;本书主要是按照教育部关于计算机专业数据结构课程大纲的要求略微增减来组织内容的。&lt;/p&gt;&#xD;
&lt;p &gt;主要包括：数据结构介绍，算法推导大O阶的方法，线性表结构的介绍，顺序结构与链式结构差异，栈与队列的应用，串的朴素模式匹配、KMP模式匹配算法，树结构的介绍，二叉树前中后序遍历，线索二叉树，赫夫曼树及应用，图结构的介绍，图的深度、广度遍历，最小生成树两种算法，最短路径两种算法，拓扑排序与关键路径算法，查找应用的相关介绍，折半查找、插值查找、斐波那契查找等静态查找，稠密索引、分块索引、倒排索引等索引技术，二叉排序树、平衡二叉树等动态查找，B树、B+树技术，散列表技术，排序应用的相关介绍，冒泡、选择、插入等简单排序，希尔、堆、归并、快速等改进排序，各位排序算法的对比等。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;本书读者&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p &gt;数据结构是计算机软件相关专业的基础课程，几乎可以说，要想从事编程工作，无论你是否是科班出身，都不可以绕过这部分知识。因此，适合阅读本书的读者非常广泛，包括在读的本专科、中专职高技校等计算机专业学生、想转行做开发的非专业人员、欲考计算机研究生的应届或在职人员，以及工作后需要补学或温习数据结构和算法的程序员等各类读者。&lt;/p&gt;&#xD;
&lt;p &gt;本书对读者的技术背影要求比较低，只要是学过一门高级编程语言，例如C、C++、Java、C#、VB等就可以开始阅读本书。不过由于当中涉及到比较复杂的算法知识，需要读者有一定的数学修养和逻辑思维能力，否则可能书籍的后半部分阅读起来会比较吃力。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;本书研读方法&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p &gt;事实上，任何有难度的知识和技巧，都不是那么容易被掌握的。我尽管已经朝着通俗易懂的方向努力，可有些数据结构，特别是经典算法，是几代科学家的智慧结晶，因此要掌握它们还是需要读者的全力投入。&lt;/p&gt;&#xD;
&lt;p &gt;美国畅销书《如何阅读一本书》中提到&amp;ldquo;阅读可以是一件主动的事，阅读越主动，效果越好。拿同样的书给背景相近的两个人阅读，一个人却比另一个人从书中得到了更多，这是因为，首先在于这人的主动，其次，在于他在阅读中的每一种活动都参与了更多的技巧。这两件事是息息相关的。阅读是一个复杂的活动，就跟写作一样，包含了大量不同的活动。要达成良好的阅读，这些活动都是不可或缺的。一个人越能良好运作这些活动，阅读的效果也就越好。&amp;rdquo;&lt;/p&gt;&#xD;
&lt;p &gt;我当然希望读者在阅读本书后收获巨大，但这显然是一厢情愿。要想获得更多，您可能也需要付出类似我写作一样的力气来阅读，例如摘抄文字、眉批心得、稿纸演算、代码输入电脑，以及您自己在编程工作中的运用等。这些相应活动的执行，将会使您得到巨大的收获。&lt;/p&gt;&#xD;
&lt;p &gt;作为作者，建议本书的研读方法为：&lt;/p&gt;&#xD;
&lt;p &gt;1．复习C语言的基础知识。如果你掌握的是别的语言也不要紧，适当了解一些C语言和你掌握的编程语言的语法差异还是有必要的。甚至将本书代码改造成另一种语言本身就是一种非常好的学习方法。&lt;/p&gt;&#xD;
&lt;p &gt;2．阅读第一遍时，建议从头至尾进行。如果你对前面的知识有足够了解，当然可以跳过直接阅读后面的章节。不过若要学习一门完整的知识并形成体系。通读本书，还是最好的学习方法。&lt;/p&gt;&#xD;
&lt;p &gt;3．阅读时，摘抄是非常好的习惯。&amp;ldquo;最淡的墨水也胜于最强的记忆！&amp;rdquo;有不少读者会认为摘抄了将来也不会再去看，有什么必要，但其实在写字的过程就是大脑学习的过程，写字在减缓你阅读的速度，从而让你更好地消化阅读的内容。相信大家都能理解，&amp;ldquo;囫囵吞枣&amp;rdquo;和&amp;ldquo;慢慢品味&amp;rdquo;的差异，学习同样如此。&lt;/p&gt;&#xD;
&lt;p &gt;4．&lt;b&gt;阅读每一章时，特别是在阅读算法的推导过程时，一定要在电脑中运行代码（本书源码的下载地址可以到&lt;/b&gt;&lt;b&gt;http://cj723.cnblogs.com&lt;/b&gt;&lt;b&gt;中的《大话数据结构相关主题》中找到），了解代码的运行过程。本书的很多算法都做到了逐行讲解，但单纯阅读可能真的很难达到理解的程度（这是纸质书无法克服的缺陷），需要你通过开发工具调试，并设置断点和逐行执行，并参照书中的讲解，观察变量的变化情况来理解算法的编写原理&lt;/b&gt;。&lt;/p&gt;&#xD;
&lt;p &gt;5．阅读完每一章时，一定要在理解基础上记忆一些关键东西。最佳的效果就是你可以不看书也做到一点不错地默写出相关算法。&lt;/p&gt;&#xD;
&lt;p &gt;6．阅读完每一章时，一定要适当练习。本书没有提供练习题，但市场上相关的数据结构习题集比比皆是，可以选择尝试。另外互联网上也可以获得足够的习题来给你练习。练习的目的是为了检测自己是否真的完全理解了书中的内容。事实上很多时候，阅读中的人们只是自我感觉理解，而并非真正的明白。&lt;/p&gt;&#xD;
&lt;p &gt;7．学习不可能一蹴而就，数据结构和算法如果通过一本书就可以掌握，那本身就是笑话。本书附录提供了本书写作时的参考书目，基本都是最优秀的数据结构或相关的中文书籍各有侧重，建议大家可以适当地阅读。&lt;/p&gt;&#xD;
&lt;p &gt;8．在之后的编程学习和工作中，尽量把已经学到的数据结构和算法知识运用到现实开发中。遗忘时翻阅本书回顾相关内容，最终达到精通数据结构和相关算法的境界。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;编程语言说明&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p &gt;本书是用C语言编写，基于C90（ISO C）的标准。读者可以选择任何一款基于C90标准的C语言开发工具或更高版本的开发工具来学习本书中的代码。&lt;/p&gt;&#xD;
&lt;p &gt;本人一直习惯于用Visual Studio 2008作为开发工具，因此在写作此书时，也是用此工具的Visual C++来编译调试代码，一切都相安无事，但写作完成后，考虑到不同读者应用开发工具的习惯不同，最终在编辑的建议下，决定提供一份可在C90标准的C语言开发环境中编译通过的代码，结果发现错误百出。&lt;/p&gt;&#xD;
&lt;p &gt;例如C90标准的注释要求是&amp;ldquo;/* 注释文字 */&amp;rdquo;而不允许是&amp;ldquo;//注释文字&amp;rdquo;：要求变量声明必须要在函数的最前面，只能是&amp;ldquo;int i; for(i=0;i&amp;lt;n;i++)&amp;hellip;&amp;hellip;&amp;rdquo;，而不允许如&amp;ldquo;for (int i=0;i&amp;lt;n;i++)&amp;rdquo;这样的方式：再比如C++中函数的参数可以传递如&amp;ldquo;void CreateBiTree(BiTree &amp;amp;T)&amp;rdquo;的地址变量，但在C语言中，只能传递如&amp;ldquo;void CreateBiTree(BiTree *T)&amp;rdquo;的指针变量。因此当你看到书中的有些代码到处都是&amp;ldquo;*&amp;rdquo;时，就用不着奇怪了。&lt;/p&gt;&#xD;
&lt;p &gt;出于为了让代码可以在低端编译环境通过的考虑，牺牲一些代码的简捷性和优雅性也是无可奈何和必要的。最终我将书中全部代码都改成C90标准的代码。&lt;/p&gt;&#xD;
&lt;p &gt;C语言初学者可能会因为刚接触编程语言，特别是对指针的理解不深，而担心阅读困难。我个人感觉，单纯学习指针是很难理解它的真正用途和好处，而通过学习数据结构，特别是像链式存储结构在各种结构算法中的运用，反而可以让读者进一步的理解指针的优越之处。从这个角度说，数据结构的学习可以反过来加强读者对C语言，特别是指针概念的理解。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;编程语言差异&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p &gt;C语言是一门古老的高级语言，它的应用范围非常广泛，因此我选择它作为本书的算法展示语言。如果读者之前学过它，那么阅读本书就不存在语言障碍。懂得C++语言的读者，同样也不会有任何语言上的问题。&lt;/p&gt;&#xD;
&lt;p &gt;像掌握Java、C#、VB等面向对象语言的读者，当面对书中大量的C语言式的结构（struct）声明和针对结构的参数传递的代码时，都可以理解为是类的定义和由类生成对象的传递。尽管的确存在差异，但是并不影响整体对数据结构知识和算法原理的理解。&lt;/p&gt;&#xD;
&lt;p &gt;我个人感觉，哪怕是对C语言不熟悉，也不妨利用学习数据结构的机会，学习一下C语言的编程方法，这对于将来应用其他高级语言也是有很大帮助的。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;不是一个人在战斗&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p &gt;首先要感谢我的妻子李秀芳对我写作本书期间的全力支持，我辞职写作，没有她精神上的理解鼓励和生活上的悉心照顾，是不可能走出这一步并顺利完成书稿的。我们的儿子程晟涵如今已经三周岁，我是在他每日的欢声笑语和哭哭啼啼中进行每一章节的构思和写作，希望他可以茁壮成长。我的父母已经年迈，他们为我的全职创作也甚为担心和忧虑，这里也要说一声抱歉。&lt;/p&gt;&#xD;
&lt;p &gt;本人数据结构的知识，是源自清华大学出版社出版的《数据结构（C语言版）》（严蔚敏、吴伟民编著）一书，&lt;st1:personname productid="严"&gt;严&lt;/st1:personname&gt;老&lt;st1:personname productid="师和吴"&gt;师和吴&lt;/st1:personname&gt;老师算是我在数据结构方面的启&lt;st1:personname productid="蒙"&gt;蒙&lt;/st1:personname&gt;老师，本书的不少内容和代码也是参考了此书。机械工业出版社的《算法导论》对于本人的算法知识提高帮助很大，写作中也大量吸收了书中的精华。写作过程中，本人购买和借阅了与数据结构相关的大量书籍，详细书目见附录。没有前辈的贡献，就没有本书的出版，也希望本书能成为这些书籍的前期读物。在此向这些图书作者表示衷心的感谢。&lt;/p&gt;&#xD;
&lt;p &gt;仅有作者是不可能完成图书的出版的，本人要非常感谢清华大学出版社的朋友们，他们是本书的最初读者，也是协助本人将此书由毛糙变精良的最有力帮手。&lt;/p&gt;&#xD;
&lt;p &gt;本书的封面设计程瑜、插图设计周翔，都是在反反复复的修改中完成创作的。&lt;/p&gt;&#xD;
&lt;p &gt;写作中，还得到了周筠、卢鸫翔、张伸、胡文佳、Milo、陈钢、刘超、刘唯一、杨绣国、戚妩婷、雷顺、杨诗盈、高宇翔、林健的友情帮助，他们都在本人的书稿创作中提出了宝贵建议。&lt;/p&gt;&#xD;
&lt;p &gt;在此向所有帮助与支持我的朋友道一声：谢谢！&lt;/p&gt;&#xD;
&lt;p align="right"&gt;程 杰&lt;/p&gt;&#xD;
&lt;p align="right"&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cj723/aggbug/2065564.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cj723/archive/2011/06/01/2065564.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cj723/archive/2011/05/31/2064886.html</id><title type="text">推荐阅读《大话设计模式》的策划编辑陈禹成写的新书《电脑使用说明书》</title><summary type="text">三年前，我很幸运能与陈禹成（当年叫陈冰，曾是清华大学出版社策划编辑）合作，完成了《大话设计模式》的创作和出版工作。应该说，没有陈禹成的帮助，也不可能有《大话设计模式》的成功。非常感谢他！非常巧，就在我的新书要出版之时，陈禹成的新书《电脑使用说明书》也在当当预售了，我们竟然是同一个月出版的。因此，无论如何也要为朋友的新书吆喝一把。希望看到的朋友可以将此书推荐给你的父母、女友、妹妹等等所有对电脑了解甚少，希望可以轻松了解电脑基础知识的朋友。我看过此书的样章，相信不会让他们失望的。</summary><published>2011-05-31T09:06:00Z</published><updated>2011-05-31T09:06:00Z</updated><author><name>伍迷</name><uri>http://www.cnblogs.com/cj723/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cj723/archive/2011/05/31/2064886.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cj723/archive/2011/05/31/2064886.html"/><content type="html">&lt;p&gt;三年前，我很幸运能与陈禹成（当年叫陈冰，曾是清华大学出版社策划编辑）合作，完成了《大话设计模式》的创作和出版工作。应该说，没有陈禹成的帮助，也不可能有《大话设计模式》的成功。非常感谢他！&lt;/p&gt;&#xD;
&lt;p&gt;非常巧，就在我的新书要出版之时，陈禹成的新书《电脑使用说明书》也在当当预售了，我们竟然是同一个月出版的。因此，无论如何也要为朋友的新书吆喝一把。希望看到的朋友可以将此书推荐给你的父母、女友、妹妹等等所有对电脑了解甚少，希望可以轻松了解电脑基础知识的朋友。我看过此书的样章，相信不会让他们失望的。&lt;/p&gt;&#xD;
&lt;p&gt;当当预售地址：&lt;a href="http://product.dangdang.com/product.aspx?product_id=21094170"&gt;http://product.dangdang.com/product.aspx?product_id=21094170&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/17166/2011053117021165.jpg" style="margin-right: auto; margin-left: auto; display: block;" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cj723/aggbug/2064886.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cj723/archive/2011/05/31/2064886.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cj723/archive/2011/04/29/2033000.html</id><title type="text">《大话数据结构》第9章 排序 9.10 总结回顾</title><summary type="text">我们生命中，矛盾和困惑往往一直伴随。很多同学来学习数据结构，其实并不是真的明白它的重要性，通常只是因为学校开了这门课，而不得不来这里弄个PASS，过后，真到需要用时，却发现力不从心而追悔莫及。尽管现在是课程的最后，对于个别没有重视这门课的同学来说有些晚了，我还是想再亡羊补牢：数据结构和算法对于程序员的职业人生来说，那就是两个圆圈的交集部分，用心去掌握它，你的编程之路将会是坦途。</summary><published>2011-04-29T09:34:00Z</published><updated>2011-04-29T09:34:00Z</updated><author><name>伍迷</name><uri>http://www.cnblogs.com/cj723/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cj723/archive/2011/04/29/2033000.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cj723/archive/2011/04/29/2033000.html"/><content type="html">&lt;p&gt;&lt;strong&gt;9.10&amp;nbsp;总结回顾&lt;br /&gt;&#xD;
&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 本章内容只是在讲排序，我们需要对已经提到的各个排序算法进行对比来总结回顾。&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 首先我们讲了排序的定义，并提到了排序的稳定性，排序稳定对于某些特殊需求来说是至关重要的，因此在排序算法中，我们需要关注此算法的稳定性如何。&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我们将排序记录是否全部被放置在内存中，将排序分为内排序与外排序，外排序需要在内外存之间多次交换数据才能进行。我们本章主要讲的是内排序的算法。&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 根据排序过程中借助的主要操作，我们将内排序分为：插入排序、交换排序、选择排序和归并排序四类。之后介绍的七种排序法，就分别是各种分类的代表算法。&lt;br /&gt;&#xD;
&lt;div align="center"&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/cj723/dasu/9-10-01.jpg" /&gt;&lt;/div&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 事实上，目前还没有十全十美的排序算法，有优点就会有缺点，即使是快速排序法，也只是在整体性能上优越，它也存在排序不稳定、需要大量辅助空间、对少量数据排序无优势等不足。因此我们就来从多个角度来剖析一下提到的各种排序的长与短。&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我们将七种算法的各种指标进行对比，如表9-10-2所示。&lt;br /&gt;&#xD;
&lt;div align="center"&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/cj723/dasu/9-10-02.jpg" /&gt;&lt;/div&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 从算法的简单性来看，我们将七种算法分为两类&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1)&amp;nbsp;简单算法：冒泡、简单选择、直接插入。&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2)&amp;nbsp;改进算法：希尔、堆、归并、快速。&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 从平均情况来看，显然后三种改进算法要胜过希尔排序，并远远胜过前三种简单算法。&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 从最好情况看，反而冒泡和直接插入排序要更胜一筹，也就是说，如果你的待排序序列总是基本有序，反而不应该考虑四种复杂的改进算法。&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 从最坏情况看，堆排序与归并排序又强过快速排序以及其他简单排序。&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 从这三组时间复杂度的数据对比中，我们可以得出这样一个认识。堆排序和归并排序就像两个参加奥数考试的优等生，心理素质强，发挥稳定。而快速排序像是很情绪化的天才，心情好时表现极佳，碰到较糟糕环境会变得差强人意。但是他们如果都来比赛计算个位数的加减法，它们反而算不过成绩极普通的冒泡和直接插入。&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 从空间复杂度来说，归并排序强调要马跑得快，就得给马吃个饱。快速排序也有相应的空间要求，反而堆排序等却都是少量索取，大量付出，对空间要求是O(1)。如果执行算法的软件所处的环境非常在乎内存使用量的多少时，选择归并排序和快速排序就不是一个较好的决策了。&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 从稳定性来看，归并排序独占鳌头，我们前面也说过，对于非常在乎排序稳定性的应用中，归并排序是个好算法。&lt;/p&gt;&#xD;
&lt;p&gt;从待排序记录的个数上来说，待排序的个数n越小，采用简单排序方法越合适。反之，n越大，采用改进排序方法越合适。这也就是我们为什么对快速排序优化时，增加了一个阀值，低于阀值时换作直接插入排序的原因。&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 从上表的数据中，似乎简单选择排序在三种简单排序中性能最差，其实也不完全是，比如说如果记录的关键字本身信息量比较大（例如关键字都是数十位的数字），此时表明其占用存储空间很大，这样移动记录所花费的时间也就越多，我们给出三种简单排序算法的移动次数比较，如表9-10-3所示。&lt;br /&gt;&#xD;
&lt;div align="center"&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/cj723/dasu/9-10-03.jpg" /&gt;&lt;/div&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 你会发现，此时简单选择排序就变得非常有优势，原因也就在于，它是通过大量比较后选择明确的记录进行移动，有的放矢。因此对于数据量不是很大，而记录的关键字信息量较大的排序要求，简单排序算法是占优的。另外，记录的关键字信息量大小对那四个改进算法影响不大。&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 总之，从综合各项指标来说，经过优化的快速排序是性能最好的排序算法，但是不同的场合我们也应该考虑使用不同的算法来应对它。&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;9.11&amp;nbsp;结尾语&lt;/strong&gt;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 学完排序，你能够感受到，我们的算法研究者们都是在&amp;#8220;似乎不可能&amp;#8221;的情况下，逐步提高排序算法的性能的。在剩下的几分钟时间里，我们再来做一道智力题，感受一下把不可能变为可能。&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 请问如何把图9-11-1的用四段直线一笔将这九个点连起来？&lt;br /&gt;&#xD;
&lt;div align="center"&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/cj723/dasu/9-11-01.jpg" /&gt;&lt;/div&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 大家举手很快，因为绝大数同学应该都看过这道题目。没有做过题目的同学通常十有八九会落入一个小小的陷阱，在九个点围成的框中打转转，然后发现至少要五段以上的直线才能连成。结果是，要找到答案，必须在思维上突破这九个点所围成的框框的限制。&lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
&lt;div align="center"&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/cj723/dasu/9-11-02.jpg" /&gt;&lt;/div&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果智力题这就结束了，那就不考大家了。现在我的问题是如何做到三段直线一笔将这九个点连起来？&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 此时，大家都在交头接耳，心里一定想着，&amp;#8220;这怎么可能？&amp;#8221;我来公布答案，那就是用一条&amp;#8220;Z&amp;#8221;字线即可一笔连成。也许，最快找出这个答案的是那些没有学过数学的孩子。作为成人，我们已被另一些&amp;#8220;框框&amp;#8221;所框住大脑。那就是数学上有一条基本公理：两条平行线永不相交。另外数学上有另一个基本假设：点没有大小。可在现实中任何一点都会有大小。突破这一限制，只要无限延长&amp;#8220;Z&amp;#8221;字三段线，九点必可一笔连。来看图9-11-3。&lt;br /&gt;&#xD;
&lt;div align="center"&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/cj723/dasu/9-11-03.jpg" /&gt;&lt;/div&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 有同学说，我图中的点比刚才的要大，这不符合题意。我想有这样想法的同学，可能还是没有理解我想表达的意思，事实上，刚才的小黑点再小，它也是有大小的，你可以想像三根直线足够长，它们就可以将这九个点相连了。&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 别急，题目没完，我现在要求只用一条直线将这九点一笔连，如何做？&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 显然，大家的思维已经被打开。我们可轻易找到答案，因为只要再次突破几何学中&amp;#8220;线没粗细&amp;#8221;的框框，用一条很粗的线，比如蘸了墨水的大刷子，画一条粗粗的直线将九点全部包含其中即可。&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 不是不可能用四段、三段、一段直线一笔连九点，只是暂时还没有找到方法而已。现实生活中所有的发明创造都是建立在打破前人所认定的&amp;#8220;框框&amp;#8221;的思维定势基础上的。这道智力题当然不是要挑战数学的权威，它只是在给我们启示：&amp;#8220;所有的事情都是可能的，只是我们暂时还没有找到方法而已。&amp;#8221;&lt;/p&gt;&#xD;
&lt;p&gt;本章的结束，其实也就是数据结构这门课的结束了。数据结构和算法，还有很多内容我们并没有涉及。要想真正掌握数据结构，并把它应用到工作中，你们的路还很长。&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我们生命中，矛盾和困惑往往一直伴随。很多同学来学习数据结构，其实并不是真的明白它的重要性，通常只是因为学校开了这门课，而不得不来这里弄个PASS，过后，真到需要用时，却发现力不从心而追悔莫及。比如图9-11-4，悲剧通常就是这样产生的。因此尽管现在是课程的最后，对于个别没有重视这门课的同学来说有些晚了，我还是想再亡羊补牢：数据结构和算法对于程序员的职业人生来说，那就是两个圆圈的交集部分，用心去掌握它，你的编程之路将会是坦途。&lt;br /&gt;&#xD;
&lt;div align="center"&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/cj723/dasu/9-11-04.jpg" /&gt;&lt;/div&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 最后送大家电影《当幸福来敲门》中的一句话：&amp;#8220;You got a dream,you gotta protect it. People can&amp;#8217;t do something themselves, they wanna tell you you can&amp;#8217;t do it. If you want something, go get it. Period.如果你有梦想的话，就要去捍卫它。当别人做不到的时候，他们就想要告诉你，你也不能。如果你想要些什么，就得去努力争取。这就样！&amp;#8221;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 同学们，再见！&lt;br /&gt;&#xD;
&lt;/p&gt;  &lt;img src="http://www.cnblogs.com/cj723/aggbug/2033000.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cj723/archive/2011/04/29/2033000.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
