对数据结构的理解
1. 直观感受:
- 当计算机需要处理图书馆书目检索自动化问题:计算机处理对象是书目文件等相关的索引表,而索引表中的每一行之间存在线性关系,则在实现书目检索自动化这一过程中建立的数学模型,可称为线性的数据结构
- 在计算机处理多叉路口的交通灯管理问题时,建立的数学模型,可称为“图”的数据结构。
计算机在处理问题时,建立的数学模型不再是数学方程,而是诸如表、树、图之类的数据结构。
-
举例:
选课系统中,各个“学生”的记录顺序排列,形成一个学生记录的线性序列,每个记录之间形成线性关系;一个学生可以选修多门课程,一门课程可以被多个学生选修,学生、课程、选课之间是网状的关系。在生活中会涉及各种各样的数据,如何存储它们,组织它们,需要讨论它们的归类以及之间的关系,从而建立相应的数据结构。
数据结构是一种工具。
2. 数据结构中一些基础术语
数据: 举例——学籍管理文件 字符串 数组
数据元素:举例——学生记录 每个字符 数组的组成成分
结构: 数据元素之间的关系称为结构
存储、组织、管理这些数据元素----建立相应的数据结构。
数据结构是存储、组织、管理现实生活中各种结构的数据元素的一种工具。
建立数据结构是为了对数据元素进行存储、组织、管理,因为数据元素之间不是孤立存在的,相互之间有一定联系,
所以,对数据元素的存储、管理,包括对其内在的联系进行管理。
数据结构是对数据元素、数据元素之间的关系进行存储、组织、管理。数据结构可以理解为数据元素的一种载体。
3. 【逻辑结构】
- 既然数据结构要对数据元素、数据元素之间的关系进行存储、组织管理,那么不同的数据元素以及数据元素之间的关系应该对应不同的数据结构。因此,对于数据元素之间是一对一的线性关系-----使用线性结构的数据结构进行管理;对于数据元素之间是非线性的关系—使用非线性结构的数据结构进行管理。
数据结构可分为线性结构、非线性结构
- 线性结构是如何对数据元素进行存储、管理的?
将数据元素按某种次序排列在一个序列中。除第一个元素外,其他每个元素都有一个且仅有一个直接前驱,除最后一个元素外,其他每个元素都有且仅有一个直接后继。这种线性结构可称为线性表。
-
非线性结构是如何对数据元素进行存储、管理的?
数据元素之间的联系较多,可通过树、或者图这种非线性结构存储、管理元素。
逻辑结构-线性结构、非线性结构
最终我们使用这种数据结构是为了利用计算机这一工具,实现我们的需求。所以这一数据结构在计算机中是如何表示的,才是我们更为关心的一个问题。
4. 【存储结构】
-
通过以上分析,我们知道线性结构的数据元素是通过线性表这一数据结构存储、管理的。那么这一数据结构在计算机中是如何表示的呢?
在计算机中可以通过顺序存储结构以及链式存储结构表示这一数据结构。
同理,对于非线性结构的数据元素,其数据结构在计算机中也可通过顺序存储结构以及链式存储结构实现。所以,我们要真正的描述一个数据结构,首先要知道该数据结构是如何存储、管理数据元素以及它们之间的关系-线性结构、非线性结构(逻辑结构); 其次要知道这一数据结构在计算机中是如何表示的(存储结构)。 此外,数据结构是对数据元素进行组织、管理的工具,数据结构作为数据元素的一种载体,对数据元素的各种操作必然和数据结构息息相关。 综上,描述一个数据结构包含逻辑结构、存储结构、数据的运算三个方面的内容。
-
以线性表为例说明一下数据结构这一概念:
我们现在需要对学籍管理文件这一数据进行处理,故计算机需要处理的数据元素为n个学生记录。这n个学生记录的关系是线性的,所以我们需要一个线性的数据结构对其进行处理——线性表。在计算机中通过顺序存储结构或者链式存储结构对其进行表示。
- 在计算机中如何定义一个数据结构呢?
通过抽象数据类型对数据结构进行定义,其包括数据对象,数据关系以及基本操作。通过数据结构的类型定义可说明该数据结构的逻辑结构、存储结构以及数据的运算三个方面的内容。