基本概念
1.数据结构基本概念
- 数据
- 是能输入计算机且能被计算机处理的各种符号集合;
- 信息的载体;
- 是对客观事物符号化的表示;
- 能够被计算机识别、存储和加工;
分类:
- 数值型的数据:整数、实数等;
- 非数值型的数据:文字、图形、声音等;
- 数据元素(Data Element)
是数据的基本单位,通常作为一个整体进行考虑和处理;
-
数据项(Data Item)
一个数据元素可由若干个数据项组成,数据项是数据元素的不可分割的最小单位;
-
数据对象(Data Object)
是具有相同性质的数据元素的集合,是数据的一个子集;
- 数据结构(Data Structure)
是相互之间存在的一种或多种特定关系的数据元素的集合;
![外链图片
2.数据结构三要素
- 逻辑结构:
从逻辑关系上描述数据,与数据存储无关,它是从具体问题抽象出来的数学模型;
- 物理结构(存储结构):
数据元素及其关系在计算机中内存中的存储形式(又称映像);
- 数据的运算:
数据上的某些操作,包括:增删改查排序等;
- 逻辑结构的种类:
划分方法一:
线性结构:有且仅有一个开始和一个终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继;例如:线性表、栈、队列、串
非线性结构:一个结点可能有多个直接前驱和直接后继;例如:树、图
划分方法二:
集合:数据元素间除”同属于一个集合“外,无其他关系;
!
线性结构:一个对一个线性关系,如线性表、栈、队列;
树形结构:一个对多个层次关系;
图形结构:多个对多个任意关系;
- 物理结构(存储结构)的种类:
顺序存储结构
链式存储结构
索引存储结构
散列存储结构
-
数据的运算(增删改查)
3.抽象数据类型定义
- **数据类型:**是一个值的集合和定义在此值集合上的一组操作的总称;
按“值”的不同特性数据类型可分为(高级程序语言):
(1) 原子类型:其值不可再分的数据类型
C语言:char int float double
(2) 结构类型:其值可再分解为若干成份的数据类型
struct Customer{
int num;
int people;
...
}
- **ADT(Abstract Data Type):**抽象数据类型
- **定义:**是指一个数学模型及定义在该模型上的一组操作;
- 包括三个方面:
- 由用户定义:从具体问题抽象出数学模型(逻辑结构);
- 数据的运算:定义在此数学模型上的一组抽象操作;
- 不考虑在计算机内的具体存储结构与运算的具体实现;
- **抽象数据类型 = 逻辑结构 + 抽象运算 **
抽象数据类型实质上是一个对求解问题的形式化描述(与计算机无关),程序员可以在理解基础上实现;
数据结构由一个四元组来表示:
Data_Structure =(D,R,L,O), 数据元素、数据元素之间的逻辑关系、逻辑关系在计算机 中的存储表示、以及所规定的操作这四部分;
抽象数据类型ADT一般包含数据元素、数据元素之间关系及操作三要素 (D, R, O),其中:
D是数据元素集;
R是D上的关系集合;
O是对D的基本操作集;
抽象数据类型定义
Circle:圆的定义
ADT 抽象数据类型名{ ADT Circle{
数据对象的定义 D={r,x,y| r,x,y 均为实数}
数据元素之间的逻辑关系 R={r,x,y| r是半径,<x,y> 为圆心坐标}
Operation Circle(&C, r,x,y)
操作 1 : 操作结果:构造一个圆
初始条件 double Area(C)
操作结果描述 初始条件:圆已存在
操作 2 : 操作结果:计算圆的面积
… … … …
操作 n: } ADT Circle
} ADT 抽象数据类型名
- 数据结构求解问题过程