导读:在看书前,我对这本书的内容,是 这么想的:数据结构,那大概就是关于数据和结构的东西。而讲到数据,估计会说到数据类型,数据定义,数据存储等方面。然后在结构方面,就不是很清晰,没看书之前,用的是打遍天下无敌手的三大结构去猜的数据结构,即:顺序结构、选择结构、循环结构。
一、导图概述(第一遍)
结合自己之前对于这本书的猜测,在看完了书之后,我依然将其分为了三个部分:概论、数据和结构。
首先,在概论中,讲述了一些基础的术语,以及告诉我们为什么要分析数据结构,还有关于整本书的一个安排流程。所以说,这一章其实是最重要的一章,它是一个战略上的宏观指导,看了这一章,才明白所以然和之所以然,才能明白我们学什么和为什么学。尤其是最后有一个关于整本书的安排流程,可以帮助我们对于这本书进行一个初步的大体上的把握。
其实,是数据部分。这一部分和之前预想的有些出入,在这里并没有介绍预想中的数据类型,但介绍了集中数据结构,但相对于后续的树、图等,我将这一部分划分为数据,因为我认为栈和队列,以及线性表,都是一些简单的数据结构(相对于图和树),可以算是图和树结构的颗粒性数据。值得一说的是:排序。将数据以一定的结构分好之后,按什么顺序去存储,直接影响了其使用性能,所以要提高性能,考虑数据的结构、类型和排序规则是必不可少的事儿。
最后,就是结构部分,也就是对于简单数据结构的再组合,一种更深一点的结构。而其实查找表是一种运算,也就是我们常说的增、删、改、查这些东西。它是对于我们的数据的一些基本的操作。
二、导图概述(思考后)
前面说了一些自己关于这本书看之前的猜测,和看过之后的想法。但其实说的都是数据结构本身这一块知识,那么数据结构,它在整个软件工程过程中,在我们的应用中,又是扮演了什么样的角色呢?
我认为书中说的栈、队列、线性表,二叉树,图之类,其实还局限于逻辑模型这一层面上。而其存储结构,其实就是由逻辑模型转换为物理模型的一个过程。比如说,在二叉树中,它有其顺序存储结构,这一存储也就是我们在数据库系统原理中学到的关于三范式的应用,这样的存储,在其数据较多的情况下,是很费空间和损效率的。而其后说到的儿叉链表和三叉链表,它的左孩子指针、右孩子指针,其实就相当于主键、次键等功用。
而后,整个的数据,却又是根据问题得来,进一步优化。到最后能通过编码解决问题,所依赖的是经过一系列算法和排序整理好的物理结构的数据。
所以,数据结构,其实说的不是顺序、选择、循环这三个结构,我认为其描述的是逻辑、物理结构,其从原始数据—概念模型—逻辑模型—物理模型的描述。这一切都在为解决问题而服务,它是计算机解决问题的过程中很重要的一个环节,它的排序和算法,存储结构都将直接影响性能和功能。
三、个人感受
看完第一次,不经脑子,觉得它是新的,很难的。细细琢磨会儿,发现和数据库系统原理有很大的联系,也不算是新的。而且我们现在做的事儿好像都在分析着数据结构。书看完一遍,恐惧是没有了,信心大大的有。