数据结构:基于C++语言(微课版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 数据的逻辑结构

在系统地讨论数据的逻辑结构之前,首先介绍逻辑结构中经常用到的概念和术语。

1-3 数据的逻辑结构

1. 数据

计算机科学中,数据的含义极为广泛,所谓数据就是计算机加工处理的对象,它可以是数值数据,也可以是非数值数据。数值数据,如整数、实数、复数等,主要用于工程计算、科学计算和商务处理等;非数值数据包括字符、文字、图形、图像、语音等。例如,产品质量管理中可以设置编码:合格=1,基本合格=2,不合格=3。总之,能被计算机表示和处理的信息都可以称为数据。

2. 数据元素

数据元素是数据结构中讨论的基本单位,是数据集合中的个体。在不同的条件下,数据元素又可称为元素、结点、顶点、记录等。例如,学生信息检索系统中学生信息表的一个记录,用来描述一个具体学生的一行数据称为一个数据元素,描述的学生不同,则数据元素的值不同。“八皇后”问题中状态树的一个状态、教学计划编排问题中的一个顶点等都被称为一个数据元素。数据元素的类型可以是简单类型,也可以是复杂的结构体类型。

一个数据元素可由若干数据项组成,例如,学生档案管理系统中学生信息表的每一个数据元素就是一个学生记录,它包括学生的学号、姓名、性别、籍贯、出生年月和成绩等数据项,多个数据项构成一个数据元素,每一个数据项都是不可再分割的。

3. 数据对象

数据对象是具有相同性质的数据元素的集合。在某个具体问题中,数据元素都具有相同的类型,属于同一数据对象。例如,在交通咨询系统的交通网中,所有的城市集合可以认为是一个数据对象,某个城市则是一个数据元素,是该数据对象的一个实例。例如,大写字母的数据对象集为{‘A’,‘B’,‘C’,…,‘Z’},这里大括号中的每个字母就是一个数据元素。

4. 数据结构

数据结构是相互之间存在着某种逻辑关系的数据元素的集合,主要包含两方面的含义,一是指数据的集合,二是限定这些数据是有结构的。即使同一个数据集合,如果结构不同,那么表示的内容也不同,也不是相等的数据结构。例如,将一段文字“漆黑的头发没有麻子脚不大周正”看成一组数据,那么可以组合出如下两个序列:“漆黑的头发,没有麻子,脚不大,周正”和“漆黑的头发没有,麻子,脚不大周正”。又如,给定数据元素{我、改、历、史、变},那么它们之间的关系可以是“我改变历史”,也可以是“历史改变我”。同样的数据元素,不同的数据组合结构,表达的含义是不同的。

数据结构按照其处理角度的不同,主要分为逻辑结构和存储结构,本节先介绍逻辑结构。

逻辑结构是指互相之间存在着一种或多种关系的数据元素的集合。在任何问题中,数据元素之间都不会是孤立的,它们之间都存在着这样或那样的关系,这种数据元素之间的关系称为数据的逻辑结构。

在应用程序中,数据结构将数据和程序组成有机的整体。根据数据元素间关系的不同特性,通常有下列4种基本的逻辑结构,分别是集合结构、线性结构、树形结构和图形结构,如图1-4所示。其中树形结构和图形结构统称为非线性结构。

●集合结构。该结构中的数据元素除同属于一种类型以外,别无其他关系。这是一种关系极为松散的结构。

●线性结构。该结构中的数据元素之间存在着一对一的关系。

●树形结构。该结构中的数据元素之间存在着一对多的关系。

●图形结构。该结构中的数据元素之间存在着多对多的关系。它也称作网状结构。

图1-4为上述4种基本逻辑结构的示意图。在实际应用中,班级中的男生、区域里所有树木的种类等都是集合结构,排队等候服务的队列、待批改的作业、老师手里的点名册、活动的节目单等都是线性结构,行政部门结构、细胞分解过程结构和家谱图等都是树形结构,交通网、电网和工程活动时序结构图等都是图形结构。

图1-4 逻辑结构