1.基本概念和术语
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。
数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。
数据(data):是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据不仅仅包括整型和实型等数据类型,还包括字符及声音、图像、视频等非数值类型。
数据元素(data element):是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理,也被称为记录、结点和顶点。
数据项:一个数据元素可以由若干个数据项组成。
数据项是数据不可分割的最小单位。
数据对象(data object):是性质相同的数据元素的集合,是数据的子集。
数据结构(data stcucture):是相互之间存在一种或多种特定关系的数据元素之间的相互关系。
不同数据元素之间不是独立的,而是存在特定的关系,称之为结构。
2.逻辑结构和物理结构
划分一:
2.1 逻辑结构的种类:线性结构和非线性结构
1)线性结构:有且仅有一个开始和一个在终端结点,并且所有节点都最多只有一个直接前趋和一个直接后继。例如:线性表、栈、队列、串。
2)非线性结构:一个结点可能有多个直接前趋和直接后继。例如:树、图。
划分二:
1)集合结构:结构中的数据元素之间除了同属于一个集合的关系外,无任何其他关系。
2)线性结构:结构中的数据元素之间存在着一对一的层次关系。
3)树形结构:结构中的数据元素之间存在着一对多的层次关系。
4)图形结构或网状结构:结构中的数据元素之间存在着多对多的任意关系。
2.2 物理结构:是指数据的逻辑结构在计算机中的存储形式。
物理结构包括有顺序存储结构、链式存储结构、索引存储结构和散列存储结构。
1)顺序存储结构:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示。
2)链式存储结构:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示。
3)索引存储结构:相当于目录。
4)散列存储结构:根据结点的关键字直接计算出该结点的存储地址。
3.数据类型和抽象数据类型
3.1 数据类型(data type):是指一组性质相同的值的集合及定义在此集合上的一组操作的总称。
数据类型是按照值的不同进行划分的。在高级语言中,每个变量、常量和表达式都有各自的取值范围。类型就用来说明变量或表达式的取值范围和所能进行的操作。
例如:C语言中:int ,char ,float ,double等基本类型;数组、结构、共用体、枚举等构造数据类型;还有指针、空(void)类型;用户也可用typedef自己定义数据类型。
数据类型的作用:约束变量或常量的取值范围和操作。
3.2 抽象数据类型:(Abstract Data Type ,ADT):一个数学模型及定义在该模型上的一组操作。
抽象数据类型的定义仅取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现无关。
抽象数据类型的形式定义:
抽象数据类型可用(D,S,P)三元组表示。其中:D是数据对象;S是D上的关系集;P是对D的基本操作集。
抽象数据类型的标准格式:
ADT 抽象数据类型名
Data
数据元素之间逻辑关系的定义
Operation
操作1
初始条件
操作结果描述
操作2
...........
操作n
...........
endADT
例如;ADT Circle {
数据对象:D={r,x,y|r,x,y均为实数 }
数据关系:R={<r,x,y>| r是半径,<x,y>是圆心坐标 }
基本操作:
Circle(&C ,r ,x ,y)
操作结果:构造一个圆。
double Area(C)
初始条件:圆已存在。
操作结果:计算面积。
double Circumference (C)
初始条件:圆已存在。
操作结果:计算周长。
....................
} ADT Cirle