概述
抱着学习算法的心态打开了这本书,作为入门的学习书籍来说,这本书将基本的一些数据结构,包含线性表(比如我们常说的数组)、栈与队列、串、树、图等进行了系统性的介绍,并且结合了一些算法进行说明。通过这个学习过程,可以了解到算法与数据结构密切的关系,以及算法的设计与数据结构的特性是相关的。
读下来感觉这本书的难度比较适合初学算法的人,有兴趣的可以一读。我也在此记录一些笔记与学习总结,相关的代码将使用C语言编写。
基本概念
包含一些可能读起来有些晦涩的术语,最好对它们心里有一个概念。
- 数据结构,是相互之间存在一种或多种特定关系的元素集合
- 数据:描述客观事物的符号,计算机中的可操作对象,能背计算机识别并输入的符号集合。包含整形、实型等数值类型,也包含声音图像等非数值类型
- 数据元素:组成数据的、有一定意义的基本单位,例如人类中,人就是基本的数据元素
- 数据项:一个数据元素由若干数据项组成,如人有五官等数据项,也可以有名字年龄等数据项
- 数据对象:性质相同的数据元素集合,是数据的子集。人都有姓名生日等相同的数据项
- 数据结构:相互之间存在一种或多种特定关系的数据元素集合。设计程序时,要分析待处理对象的特性及各个处理对象之间存在的关系,以应用合适的数据结构
- 逻辑结构与物理结构
逻辑结构:数据对象中数据元素的相互关系(最需要关注的问题)。可以分为集合结构、线性结构、树形结构、图形结构
物理(存储)结构:指数据的逻辑结构在计算机中的存储形式。可分为顺序存储、链式存储结构等 - 抽象数据类型
数据类型:一组性质相同的值的集合及定义。比如C中有整型和浮点型的基本数据结构
抽象数据类型(ADT):一个数学模型及定义,也可以包含在该模型上的一系列操作,表现数据逻辑特性(这一点可以使用面向对象概念中的“类”进行理解,ADT其实就是拥有若干域、行为的类)。描述ADT的格式: