这本书将C语言本身的复杂度大量暴露在读者面前,代码中不断纠结于错误处理、动态内存分配、输入输出等等实际和数据结构本身思想不相干的内容,对于初学者而言恐怕会相当困扰。我觉得数据结构书,或者像clrs一样用纯伪码,或者用python这样语法简单的动态语言,这样才不至于身陷语言层面的复杂性导致只见树木不见森林。
不但如此,书中的代码风格也让人无语。比如,for循环后面的小括号里面塞进和循环控制无关的东西。再举个最简单的例子来说,比如朴素串匹配,和clrs比较一下,可读性高下立见。如果考试的时候从里面抽程序做读程题或者代码填空题,会相当郁闷吧。
有人说代码里有错误,我没有细看(这种代码看起来太费神了=.=),故未证实,大家小心就是。
另外,书中有一些应该涉及的内容没有提及,比如dijkstra/prim的堆优化(事实上书中就没有提及“优先队列”的概念),比如Bellman-Ford,等等。另外还有一些地方似乎不妥,比如将AVL和平衡BST的概念等同起来。
总之,书不差,但是不能完全依赖,更不能迷信。
另,这么多年了,这书除了封面,连内容的页数都不带变的,诶……
但是令人遗憾的是国内的大学的教学方式依旧没有什么改变,我看到伯克利分校在语言入门课程可以选修C、Python和Lisp,然而国内大学连教授自行选择教材的自由貌似都没有。
嗯,LZ说的不错,LSS也说的不错。但是我个人认为,终究还是要靠学生自己的努力,对计算机有爱的同学自然而然会去学习C语言之外的语言,来更加理解计算机科学,数据结构以及算法。而对计算机无爱的同学,即使给他世界上最优秀的教材亦是于事无补。