这本书3月份看的,之前没玩博客,所以没写总结,现在补上。
因为我本科专业不是计算机,只是对计算机很有兴趣,想跨专业考计算机系的研究生,这是决定跨考之后看的
第一本计算机专业书。看完之后收获颇大。
以前写程序基本上没有数据结构的概念,记得当初学C语言的时候,觉得链表好难理解,心想怎么会有这么复
杂的东西。再加上写的程序都比较水,上不得台面,所以对数据结构方面的知识水得跟渣一样。第一个比较像
样的程序是大二下做的学生管理系统,那是当时的C语言课程设计题目,当初觉得这玩意好复杂啊,为此还又
把谭浩强的《C语言程序设计》看了一遍,把C语言基础巩固了一下,记得写这个程序的时候数据结构用的还是
数组,没有用链表,因为老师不要求用链表,我也觉得链表太复杂,还是数组简单。就这样,我用最原始的C语
言基础知识码了3天把这个小程序码完,而同学都是抄学长的,或者搞不定的,当时那个成就感啊,觉得自己的
C语言水平已经到家了,感觉自己编程水平很牛了,各种飘飘然......现在想想当初真是好像,其实这东西没一点
技术含量,没有高级点的数据结构 (用的是数组),没有好的算法(当时排序用的还是选择排序),代码风格
也比较挫。
我就这样晃晃悠悠到了大三上,然后因为想参加我们学校的一个技术团队,就和另外一个同学报名参加了他们组
织的一个编程比赛,比赛有初赛、复赛和决赛,初赛和复赛我硬靠着扎实的C语言基本功给通过了,这次使用了链
表,不过是用的C++中的STL,我并没有亲手实现过一个链表,当时觉得这STL真是爽到爆,你啥都不用管,直接
用就好了,就有点质疑这还要学数据结构干啥?初赛和复赛给了我莫大的信心,因为复赛我们队还排名第2,不过
苦逼是决赛,因为举办方为了降低门槛,所以初赛和复赛的题目都没有涉及太多的数据结构和算法的知识,但决赛
就不一样了,记得当时进入决赛的7个队除了我们都是计算机学院或软院的。决赛题目是个求一个游戏的最优解法。
当时我和我另外一个同学硬是想了6个小时也没有搞出来。其实那个题目的主要是应用BFS算法搜索最少路径数。
是个典型是BFS算法题,但当时连BFS为何物都不清楚,惨痛的教训!
大三上是个忙碌的学期,因为本专业课程太多,也没有时间去学《数据结构》这门课,直到了大三下,也就是
这个学期,才有时间来好好研究一下。因为我C语言的基础还不错,所以看书的时候我就将每个ADT的基本操
作都自己实现了一遍,而且将书中算法的伪代码都自己用C语言实现了,感觉这本书讲数据结构还是很清楚的,
主要介绍了链表、栈、队列、树和图,我感觉树和图算是比较难的,但基本都是以链表为基础,这本书关于算
法的介绍不多,Weiss 的《数据结构与算法分析》很值的一看,这本书可以与《数据结构》一书互补。很多人
说《数据结构》没有《数据结构与算法分析》不好什么的,我觉得有些片面了,看了之后可以很明显发现其实
两本书的侧重点是不同的,《数据结构》比较重基础,每一种基础的数据都讲的很清楚,代码也给的比较多,
而《数据结构与算法分析》则比较重算法分析及全面性,书中介绍了很多高级的数据结构,但对于基础的数
据结构的介绍则没有《数据结构》详细,入门的话看《数据结构》很不错。 但之后一定要再看看《数据结构
与算法分析》,要不然可以说只学了一半。
值得一说的就是,国内的计算机专业书很多对于编程风格都比较随易,比如谭浩强的《C语言程序设计》,代
码风格实在是差劲,很容易误导初学者,再看国外的C语言经典之作K&R的《The C Programming Language》,
其编码风格被人们称为K&R风格,可以说是经典的代码风格。《数据结构》和《数据结构与算法分析》也是一
样,前者风格凌乱,后者则比较统一而且清晰,看着很舒服,所以强烈建议初学者不要盲目模仿书中的代码风
格,最好是先看一看K&R的《The C Programming Language》,养成好的编码习惯之后再看国内的书,
这样不容易被国内书的糟糕的编码风格误导!
原文链接:https://www.f2er.com/datastructure/383195.html