购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 数据结构的基本概念

1.1.1 什么是数据结构

在计算机科学界,数据结构并没有标准的定义。根据个人理解的不同而有不同的表述方法。克利福德·A.谢弗(Clifford A.Shaffer)在《数据结构与算法分析》一书中的定义:数据结构是抽象数据类型(abstract data type,ADT)的物理实现。洛贝特·L. 克鲁泽(Lobert L.Kruse)在《数据结构与程序设计》一书中,将一个数据结构的设计过程分成抽象层、数据结构层和实现层。其中,抽象层是指抽象数据类型层,讨论数据的逻辑结构及其运算,数据结构层和实现层讨论一个数据结构的逻辑表示和在计算机内的存储细节以及运算的实现。

简而言之,数据结构就是相互之间存在一种或多种特定关系的数据元素的集合,其中包括数据对象以及定义在这组数据对象上的特定关系。

在计算机程序中,数据是以整数、浮点数、字符串、数组等各种不同类型存储的,而且不同类型的数据有不同的特点和操作方式。数据结构的目标就是将这些数据按照一定的方式进行组织,以方便程序操作。因此,要设计一个结构好﹑效率高的程序,必须研究数据的特性、数据间的相互关系以及对应的存储表示,并利用这些特性和关系设计相应的算法和程序。

1.1.2 基本概念与术语

1.数据、数据元素和数据项

数据是所有能输入计算机中并被计算机程序加工、处理的符号集合,在计算机科学中指计算机操作的对象。数据可以是整型、字符型等数值类型,也可以是音频、图片、视频等非数值类型。例如,机票预订网站上某个航空班次的乘客数量、价格可以是数值型数据,而该航班的图片、实时飞行动态是非数值型数据。

数据元素是数据的基本单位,在不同的数据结构中也称为记录、节点或顶点等。数据元素是一种抽象的概念,并没有具体的数值化标准。例如,在机票预订网站中可以把一个班次看作是一个数据元素,也可以把一个乘客看作是一个数据元素。在计算机程序中数据元素通常是作为一个整体进行分析和处理的。

数据元素由数据项组成,数据项是数据不可分割的最小单位,一个数据元素可由一个或多个数据项组成。例如,数据元素航空班次(航班号,航空公司,乘客数量,出发地,目的地,票价)由数据项“航班号”“航空公司”“乘客数量”“出发地”“目的地”“票价”组成。数据项也可以称为字段或域,是对元素的详细描述,所以,也可以说数据元素航空班次有“航班号”“航空公司”“乘客数量”“出发地”“目的地”“票价”6个字段。

2.数据对象

数据对象是具有相同性质的数据元素组成的集合,也是数据的子集。例如,每一个乘客都有姓名、年龄、性别、出生地址这些数据项。在具体问题中,性质相同的数据元素的值不一定相同,但都是数据对象集合中的成员。处理相同性质的数据元素时,默认将数据对象简称为数据。也就是说,“数据”在数据结构这一课题中默认代指数据对象。

数据项、数据元素、数据对象之间的关系是什么呢?一个数据元素是由若干相关的数据项构成的,一个数据对象是由相关的数据元素构成的。它们三者是被包含与包含的关系。数据项、数据元素、数据对象是数据逻辑结构的层次单位,也是数据存储结构的层次单位。

3.数据类型和抽象数据类型

数据类型是一个值的集合以及定义在这个值集上的一组操作。其含义包括以下两点:①值的集合,集合里的数据具有相同的类型;②一组操作的集合,这组操作是作用在值的集合上的。因此也可以说它(数据类型)包括数据对象以及在数据对象上的操作。在高级程序设计语言中,数据类型用来描述数据对象的特性,定义的常量、变量等都有不同的数据类型。

通常情况下,可以将数据类型按其“值”的特性划分成原子类型和结构类型。对于原子类型,顾名思义是指其值不可分解,原子类型也称为基本类型,例如整型、字符型、浮点型、布尔类型等。对于结构类型,其值由若干个用户自己定义的分量组成,例如数组、结构体等类型。

研究数据元素之间的逻辑关系就是研究数据的逻辑结构。ADT是指描述数据的逻辑结构以及在这些逻辑结构上的一组操作。抽象数据类型的定义取决于它的逻辑特性,与其在计算机内部的表示和实现无关。也就是说,只要抽象数据类型的数学特性不变,其内部的变化就不会影响外部的使用。

抽象数据类型的定义,可以采用三元组来(D,R,P)表示。其中D表示的是数据对象,R表示D上的关系集合,P表示对D的基本操作集合。其基本格式描述如下。

ADT Name{
    Data Object:数据对象的定义
    Data Relationship:数据关系的定义
    Basic Operation:基本操作的定义
}ADT NAME

基本操作的定义格式如下。

Basic Operation Name(Parameters)
    Initial Condition:初始条件描述
    Operation Results:操作结果描述

基本操作的参数有两种:一种是赋值参数,为操作提供输入值;另一种是引用参数,以符号&开头,可以提供输入值,同时还返回操作结果。

初始条件用于描述操作执行前数据结构和参数满足的条件,如果不满足,则操作失败并返回相应的出错信息;如果初始条件为空,则可以省略。

操作结果用于说明操作正常完成之后,数据结构的变化状况和应该返回的结果。

就实质而言,抽象数据类型和数据类型是一个概念,但是其含义比一般数据类型更广泛、更抽象。二者的区别在于数据类型是高级程序设计语言支持的基本数据类型,而抽象数据类型是用户自定义的数据类型。抽象数据类型只定义数据的逻辑结构和操作说明,不考虑存储结构和具体实现。

4.数据结构

数据结构是相互之间存在一种或多种特定关系的数据元素的集合,可以使用一个公式形象地表示:数据结构=( D , R ),其中 D ={数据元素}, R ={ D 上的关系}。例如,复数可被定义为一种数据结构Complex=( D , R )。其中, D ={ x | x 是实数}, R ={< x y > | x y D x 称为实部, y 称为虚部}。可见,数据结构是计算机存储和组织数据的一种方式,因此,数据结构会影响数据的存储和检索效率。 yx1QMXi/xlWgDLYiSalDP9/SQdVnKqGEy76pzZRd0I/f21Qmu7KcQKqjXkoBI7KL

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开