开门见山
你有一个计算机,你要解决一个问题,你需要经过几步呢?
别想太复杂,和把大象送冰箱一样,三步足以:
· 分析问题,确定数据模型。想想你要做什么,对你要把大象塞冰箱。
· 设计相应的算法。想想具体把大象塞入冰箱的步骤。
· 编写程序,运行并调试程序。开门、塞入、关门,动手执行就好了。
分析问题分析的是数学模型,从问题中提取你能操作的对象,比如大象,找到这些操作对象之间的关系,然后用数学语言去描述。
什么是数据?
数据(data)是描述客观事物的数和字符的组合。说白了,凡是能被输入到计算机中的,能被计算机处理的符号的集合就是数据。
举个栗子,帝都动物园动物数据,指的就是该动物园所有动物记录的集合。
什么是数据元素(data element)?
数据元素是数据的基本单位,数据元素也称为元素、结点、顶点或者记录等。
举个例子,帝都动物园中的每个动物都是帝都动物园的一个个数据元素,这些数据元素构成了数据。
老虎贝贝是一个数据元素,大象憨憨是一个数据元素。
什么是数据项(data item)?
数据项是具有独立含义的数据不可分割的最小单位,也称为字段或域。
举个栗子,帝都动物园的每个动物都由姓名、性别、体重等,姓名是一个数据项,性别是一个数据项,体重也是一个数据项。
如果你有 面向对象(OOP)的基础,对于一个对象来说,属性就是数据项。
什么是数据对象(data object)?
数据对象是指性质相同的数据元素的集合,它是数据的一个子集。
帝都动物园中,老虎是一个数据对象,大象是一个数据对象。
说了这么半天,总算入主题了。
什么是数据结构(data structure)?
数据结构是指所有数据元素以及数据元素之间的关系,可以看做是相互之间存在着某种特定关系的数据元素的集合。
换句话而言,数据结构是数据的组织形式。
这是大象憨憨,这是老虎贝贝,我们怎么把它们安放,按着什么形式安放在帝都动物园里。
数据结构 = 数据 + 结构
数据结构要有两个东西,数据和结构,即数据和数据的组织形式。
数据结构通常包含三个方面:数据的逻辑结构、数据的存储结构和数据的运算。
· 数据的逻辑结构(logical structure):由数据元素之间的逻辑关系构成
· 数据的存储结构(storage structure):也成为数据的物理结构(physical structure)数据元素及其关系在计算机存储器中的存储表示。
· 数据的运算(operation):施加在该数据上的操作。
把我们做一个房屋作为一个工程
房子有很多东西构成对不对,门,窗户,床等
我们但说窗户,窗户就是一个数据结构。
窗户由玻璃、窗框、把手等组成,玻璃、窗框、把手这些就是元素,窗户的元素
这些元素构成了窗户, 那它们构成的窗户的模型就是逻辑结构。
而数据的元素,指的就是这个窗户它能提供的功能。
我们把窗户设计好了,门设计好了,一点一点,这个工程就完成了。
数据结构是一门讨论“描述现实世界实体的数学模型(通常为非数值计算)及其之上的运算在计算机中如何表示和实现”的学科。
鄙人才疏学浅,如果哪里发生了争议,私下和我辩说就好。我会及时修改和悔过自新。
那我们就一点一点开始学数据结构吧。