基本概念
数据结构主要研究的内容是数据之间的逻辑关系和物理实现。在计算机发展初期,使用计算机主要是为了处理数值计算问题。
处理具体问题的步骤如下:看问题,想解题思路(数学模型),设计解题方法步骤(算法),写过程(编写程序),得到答案。
对具有一定关系的数据进行组织管理,被称为非数值处理。
数学模型中的对象存在着一种简单的线性关系,该数学模型称为线性数据结构。
数据
数据是描述客观事物的数值、字符以及能输入机器且能被处理的各种符号集合。
数据是信息的载体,能够被计算机识别、存储和处理。
数据包括数值数据和非数值数据。
数据元素
数据元素是组成数据的基本单位,是数据集合的个体。
数据项
一个数据元素可由若干个数据项组成。
数据项是指不可分割的、具有独立意义的最小数据单位,也可称为“字段”。
数据项分为两种:
(1)初等项,不可分割。
(2)组合项,可再分割,可分划为更小的项。
数据对象
数据对象是性质相同的数据元素的集合,是数据的一个子集。
数据结构
数据结构指所有数据关系以及数据元素之间的关系。相当于一个数据元素集合,里面的数据元素相互之间存在着某种特定的关系。
数据结构包括:数据的逻辑结构、数据的存储结构和数据的运算。
数据的逻辑结构
定义
数据元素之间总是存在着这样或者那样的关系,这种关系被称为数据的逻辑结构。数据的逻辑结构与数据的存储无关,独立于计算机,由数据元素之间的逻辑关系组成。
形式
数据结构是一个二元组 Data_Structure=(D, R) 其中: D是数据元素的有限集,R是D上关系的有限集。
基本的逻辑结构
(1)集合结构:结构中的数据元素之间除了同属于一个集合的关系外,无任何其它关系。
(2)线性结构:结构中的数据元素之间存在着一对一的线性关系。
(3)树形结构:结构中的数据元素之间存在着一对多的层次关系。
(4)图状结构:结构中的数据元素之间存在着多对多的任意关系。
逻辑结构分为线性结构(线性表、栈、队列、字符串、数组)和非线性结构(树、图)。
数据的存储结构
定义
数据的存储结构是逻辑结构在计算机中的存储映象,是逻辑结构在计算机中的实现,它包括数据元素的表示和关系的表示。
同一种逻辑结构可以使用不同的物理结构来实现。
在计算机中表示信息的最小单位是一个二进制位(bit)。一个数据元素的“bit位串”通常称为“结点”。
当数据元素由若干数据项组成时,位串中对应于各个数据项的子位串称为数据字段。
数据元素之间的关系在计算机中有两种基本的存储结构:
(1)顺序存储结构
(2)链式存储结构
说明
存储结构是逻辑关系的映象与元素本身的映象。
逻辑结构是数据结构的抽象,存储结构是数据结构的实现,两者综合起来建立了数据元素之间的结构关系。
数据元素之间的关系在计算机中的表示方法:
(1)顺序映象 (顺序存储结构)
(2)非顺序映象(非顺序存储结构)
数据类型
数据类型,一组性质相同的值集合以及定义在这个值集合上的一组操作的总称。
定义
数据类型指由系统定义的、用户可直接使用且可构造的类型。
数据类型中定义了两个集合:类型的取值范围、可允许使用的一组运算集。特点:抽象性、封装性、构造性
分类
数据类型可分为两类:非结构的原子类型、结构类型
原子类型
原子类型的值是不可分解的。
C语言中的标准类型(整型、实型、字符型、枚举型)及指针和空类型。
结构类型
结构类型的值是由若干成分按某种结构组成的,因此是可以分解的,并且它的成分可以是原子型或结构型。
C语言中的数组、结构体、共用体。
抽象数据类型
基于一类逻辑关系的数据类型以及定义在这个类型之上的一组操作。
定义
一个ADT定义了一个数据对象,数据对象中各元素间的结构关系,以及一组处理数据的操作。
抽象数据类型用(D,S,P)三元组表示,其中D是数据对象,S是D上的关系集,P是对D的基本操作集。
ADT 通常由用户定义且用以表示应用问题的数据模型,通常由基本的数据类型组成,并包括一组相关服务操作。
ADT 抽象数据类型名{
数据对象:< 定义>
数据关系:< 定义>
基本操作:<定义>
}ADT 抽象数据类型名
设计原则
(1)数据抽象(Abstraction)与信息隐藏
一个抽象数据类型确定了一个模型,但将模型的实现细节隐藏起来;
它定义了一组运算,但将运算的实现过程隐藏起来。
(2)模块化(Modularity)
(3)封装(Encapsulation)与复用(Reuse)