想看博主whywait的更多同系列文章?点击传送门
简言 - 数据结构基本概念
前面介绍了背景,现在就来介绍一些基本概念。
基本概念不多是不可能的,从学习的全面性考虑,就不遗漏每一条基本概念了。
基本
数据:对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素:是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。有时,一个数据元素可由若干个数据项组成。数据项是数据的不可分割的最小单位。
数据对象:是性质相同的数据元素的集合,是数据的一个子集。
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。(这是对数据结构的一种简单解释)
结构的形式定义
数据结构的形式定义。数据结构是一个二元组 Data Structure = (D, S), 其中:D是数据元素的有限集,S是D上关系的有限集。
结构的几种分类方式
方式一:元素之间关系的不同特性
在任何问题中,数据元素都不是孤立存在的,而是在它们之间存在着某种关系,这种数据元素相互之间的关系称为结构。根据元素之间关系的不同特性,通常有下列四种基本结构:
- 集合:结构中的数据元素之间除了“同属于一个集合”的关系外,别无其他关系;
- 线性结构:结构中的数据元素之间存在着一个对一个的关系;
- 树形结构:结构中的数据元素之间存在着一个对多个的关系;
- 图状结构或网状结构:结构中的数据元素之间存在多个对多个的关系。
注:由于集合是数据元素之间关系极为松散的一种结构,因此也可用其他结构来表示它。
方式二:逻辑结构 & 物理结构
逻辑结构:结构定义中的关系描述的是数据元素之间的逻辑关系,因此又称为数据的逻辑结构。
物理结构(存储结构):数据结构在计算机中的表示(映像)称为数据的物理结构。
- 关于物理结构:物理结构包括数据元素的表示和关系的表示。在计算机中表示信息的最小单位是二进制数的一位,叫做位(bit)。在计算机中,我们可以用一个由若干位组合起来形成一个位串表示一个数据元素,通常称这个位串为元素(element)或结点(node)。当数据元素由若干数据项组成时,位串中对应于各个数据项的子位串称为数据域(data filed).
顺序映像和非顺序映像:对应的两种不同的存储结构为顺序存储结构和链式存储结构。顺序映像的特点是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。非顺序映像的特点是借助指示元素存储地址的指针表示数据元素之间的逻辑关系。
虚拟存储结构
虚拟存储结构:假如我们把c语言看成是一个执行c指令和c数据类型的虚拟处理器,那么我们 讨论的存储结构是数据结构在c虚拟处理器中的表示,不妨称它为虚拟存储结构。
数据类型
数据类型:数据类型是一个值的集合和定义在这个值集上的一组操作的总称。
- 数据类型是和数据结构密切相关的概念。在用高级的程序语言编写的程序中,每个变量、常量或表达式都有一个它所属的确定的数据类型。类型明显或隐含的规定了在程序执行期间变量或表达式所有可能取值的范围,以及在这些值上允许进行的操作。
- 按“值”的不同特性,高级程序语言中的数据类型可分为两类:一类是非结构的原子类型。原子类型的值是不可分解的。另一类是结构类型。结构类型的值是由若干成分按某种结构组成的,因此是可以分解的,并且它的成分可以是非结构的,也可以是结构的。
- 在某种意义上,数据结构可以看成是“一组具有相同结构的值”,则结构类型可以看成有一种数据结构和定义在其上的一组操作组成。
抽象数据类型
抽象数据类型(abstract data type,简称ADT):是指一个数学模型以及定义在该模型上的一组操作。抽象数据类型的定义仅取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现无关,即不论其内部结构如何变化,只要他的数学特性不变,都不影响其外部的使用。
- 抽象数据类型和数据类型实质上是一个概念。“抽象”的意义在于数据类型的数学抽象特性。
- 抽象数据类型的范畴更广。
- 一个含抽象数据类型的软件模块通常应包含定义、表示和实现3个部分。
抽象数据类型按照其值的不同特性可细分为下面三种类型:
- 原子类型:原子类型的变量的值是不可分解的;
- 固定聚合类型:该类型的变量其值有确定数目的成分按某种结构组成;
- 可变聚合类型:和固定聚合类型相比较,构成可变聚合类型的“值”的成分的数目不确定。
标注:后两种类型可统称为结构类型。
和数据结构的形式定义相对应,抽象数据类型可用以下三元组表示:(D,S,P)
,其中,D 是数据对象,S 是 D 上的关系集,P 是对 D 的基本操作集。
多型数据类型:是指其值的成分不确定的数据类型。从抽象数据类型的角度看,具有相同的数学抽象特性,故称之为多型数据类型;
抽象数据类型可通过固有数据类型来表示和实现(用处理器中已经存在的数据类型来说明新的结构,用已经实现的操作来组合新的操作)。
想看博主whywait的更多同系列文章?点击传送门
内容参考:《数据结构 (C语言版)》 严蔚敏、吴伟民