数据结构的定义
1、数据的相关定义
-
数据:数据描述客观事物的数和字符的集合。 数据是个集合,里面的内容是数和字符。
-
数据元素: 这个集合里的元素是数据元素,是数据的基本单位。数据元素还叫元素,节点,顶点或记录等。
-
数据项:数据元素是由数据项构成的(一个或多个)。数据项就是具体的数或者字符(如2012,张三,中国等等)。数据项是具有独立含义的数据最小单位,也称为字段或域。
-
数据对象: 数据对象是指性质相同的数据元素的集合,是数据的子集。
比如,一个班级学生的全部信息(姓名,学号,电话号码等等)是一个数据集合,其中学号就是一个数据对象,张三这名学生的信息就是数据元素(记录),而张三这个名字就是数据项(具有独立含义的数据最小单位)
-
那什么是数据结构呢?
数据结构是所有数据元素以及数据元素之间的关系,可以看成是相互作用之间存在某种特定关系的数据元素的集合。 即结构的数据元素的集合。再借用上边的例子,一个班级的学生信息是一个数据集合,一名学生的信息是数据元素,学生之间存在的关系就是**同班同学的关系**,这样的话,这个班级的学生信息就是一个数据结构。
数据结构一般包含三个方面:
数据结构是一门讨论“描述现实世界实体的数学模型(通常为非数值计算)及其之上的运算在计算机中如何表示和实现”的学科。
2、逻辑结构
-
数据的逻辑结构是从数据元素的逻辑关系上描述数据的,是指数据元素之间的逻辑关系的整体,通常是从求解问题中提炼出来的。 比如,一个班级的学生彼此之间是同学关系,这同学关系就是逻辑关系,而从这些逻辑关系中我们能提炼出来,这些学生是同一个班的,所以
“同一个班”就是逻辑结构。 -
数据的逻辑结构与数据的存储无关,是独立于计算机的,因此数据的逻辑结构可以看作是从问题抽象出来的数学模型。
(1)逻辑结构的表示
可以采取多种方式表示,常见的有图表和二元组等。
-
图表表示(表格或者图形)
两节点之间的带箭头的连线表示它们之间的相邻关系。
-
二元组表示
二元组是一种通用的数据逻辑结构。
B = (D,R)其中,B是一种数据逻辑结构,它是由数据元素集合D以及D上二元关系的集合R组成。
(2)逻辑结构的类型
客观世界中数据的逻辑结构主要分为以下几类:
-
集合
集合(set)是指数据元素之间除了“同属于一个集合”的关系以外别无其他关系。 -
线性结构
线性结构(linear atructure)是指该结构中的数据元素之间存在一对一的关系。其特点是开始元素和终止元素都是唯一的,除了开始元素和终止元素以外,其他元素都有且仅有一个前驱元素,有且仅有后驱元素。线性表是典型的线性结构。 -
树形结构
树形结构是指该结构中的数据元素之间存在一对多的关系(一个父亲会有多个孩子;一个学校有多个年级,每个年级有多个班级,每个班级有多个学生)。其特点就是除了开始元素以外,每个元素有且仅有一个前驱元素(父亲),除了终端元素(树形结构的树叶)以外,每个元素都有一个或者多个后继元素。二叉树是典型的树形结构。
- 图形结构
图形结构是指该结构中的数据元素之间存在多对多的关系。其特点是每个元素的前驱元素和后续元素的个数可以是任意的。
树形结构和图形结构统称为非线性结构。线性结构是特殊的树形结构,而树形结构也是特殊的图形结构。
3、存储结构
数据逻辑结构在计算存储器中存储表示称为数据的存储结构(也称为映像),也就是逻辑结构在计算机中的存储实现。当把数据对象存储到计算机中时,通常要求既要存储逻辑结构中的每一个数据元素,又要存储数据元素之间的逻辑关系。
显然数据的存储结构是依赖于计算机的。通常设计数据的存储结构是借助某种计算机语言来实现的,一般只在高级语言的层次上讨论存储结构,这里采用的是C/C++语言。
在实际应用中,数据的存储方式是灵活多样的,归纳起来,数据结构中有以下4种常用的存储方式。
- 顺序存储结构(sequential storage structure) 是采用一组连续的存储单元放所有的数据元素,也就是说,所有数据元素在存储器中占有一整块存储空间,而两个逻辑上相邻的元素在存储器中的存储位置也是连相邻的。因此,数据元素之间的逻辑关系由存储单元地址间的关系隐含表示,即顺序存储结构将数据结构将数据的逻辑结构直接映射到存储结构。
顺序存储结构的主要优点是存储效率高,因为分配给数据的存储单元全用于存放数据元素,元素之间的逻辑关系没有占用存储空间;另外,在采用这种存储方式时可实现对元素的随机存取,即每个元素对应一个逻辑序号,由该序号可直接计算出对应元素的存储地址,从而获取元素值。顺序存储结构的主要缺点是不便于数据的修改,对元素的插入和删除操作可能需要移动一系列的元素。
一般采用结构体数组来存储。