一、数据结构及相关概念
0. 要想知道什么是数据结构,首先要了解与“数据”相关的概念,这样才能一步步理解什么是数据结构。
我们首先用放书这件事情来举例。
- 如果正常情况下只有你自己一个人的书,那么你把他们一本一本立起来放在书架上就可以了。
- 那么如果有一个图书馆那么多的书应该怎样办么?总不能把他们乱起八糟的立起来放吧?那么是不是应该先按照社会科学、理科类、工科类、外语类等等的分类方式先分类,然后按照具体所属的类别把他们一个个放进去?其实数据结构的相关的概念就是一个这样简单的道理。
下面我们来进行具体的描述。
1. 数据
- 是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。
- 其实就对应了图书馆中的所有书。
2. 数据元素
- 是数据的基本单位,在计算机程序中通常作为一个整体进行考虑号处理。
- 对应的就是某一本具体的书,比如”数据结构与算法“这本书。
3. 数据项
- 一个数据元素可由若干个数据项组成,数据项是数据的不可分割的最小单位。
- 数据项不就是对应了书中的具体信息,比如书的作者、章节内容、ISBN编号等等。
4. 数据对象
- 是性质相同的数据元素的集合,是数据的子集。
- 数据元素是一本具体的书,那么性质相同数据元素的集合不就代表了一类具体的书籍吗,就比如计算机类的书籍,其中包含了”数据机构与算法这本书“。
看到这儿是不是对这几者的关系还有点儿晕?没关系,我们用思维导图来再次说明。
数据是由每一个具体的数据元素组成的,相同的数据元素同属于一个数据对象,每个数据元素中又有具体的信息——数据项。
接下来让我们再次把这些概念对应到具体的例子”书”中。
世界上所有书就是一个数据,每一本具体的书例如“数据结构与算法”就是一个数据元素,每本书中的具体信息例如“书名、作者、ISBN码…”就是多个数据项,一些相同类型的书的类型例如“计算机类书籍”就是一个数据对象。
现在你应该清楚以上4个概念了吧?
那我们回到最初的问题,什么是数据结构?
这里我们同样举例子来说明。
首先,一个类别的书籍中有许多具体的书,如”C语言”、”数据结构与算法”、”编译原理”,而这些书之间又有一些关联,比如某个算法可以用C语言来实现,**编译过程中需要用到特定的算法等等,这些存在关联的书即”数据元素”的集合就叫做数据结构**。
4. 数据结构
相互之间存在一种或多种特定关系的数据元素的集合。
大多数算法都需要我们适当地组织数据,而为了组织数据就产生了数据结构。
结构
逻辑结构
集合
线性结构
树形结构
网状结构或图状结构
物理结构(储存结构)
顺序储存结构
链式储存结构
(注:这里不具体展开介绍各个数据结构,在后面的附录里进行介绍)
二、抽象数据类型
- 指一个数学模型以及定义在该数据模型上的一组操作。
三、算法
- 编写一段计算机程序一般都是实现一种 已有的方法来解决某个问题。这种方法大多 和使用的编程语言无关——它适用于各种计 算机以及编程语言。
- 你要在图书馆中找到一本书,需要通过索引查找来确定这本书的位置,这个找书的过程就是一个算法。