### **数据结构是一门研究非数值计算程序设计中的操作对象,以及这些对象之间的关系和操作的学科。**
### 基本概念和术语
数据(data)–所有能输入到计算机中去的描述客观事物的符号的总称
数据元素(data element)–数据的基本单位,也成结点(node)或记录(record)
数据项(data item)–有独立含义的数据最小单位,也成域(field)
~~~
三者之间的关系:数据>数据元素>数据项
例如:成绩表>个人信息>学号、姓名、成绩
~~~
数据对象(Data Object):相同特征元素的集合,是数据的一个子集
##### 例如:整数数据对象 N={0,1,2,3…}
##### 字母字符数据对象是集合C={‘A’,’B’,’C’,’D’,….’a’,’b’,’c’,’d’…}
数据结构(data Structure)是相互之间存在一种或多种特定关系的数据元素的集合。(数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。)
### 数据结构的两个层次:
逻辑结构——数据元素间抽象化的相互关系,与数据的存储无关,独立于计算机,它是从具体问题抽象出来的数学模型。*
存储结构(物理结构)
数据元素及其关系在计算机存储中的存储方式。
逻辑结构 划分方法一
(1)线性结构—
有且仅有一个开始和一个终端结点,并且所有结点都最多只有一个直接前驱和一个后驱。
例如:线性表、栈、队列、串
(2)非线性结构—
一个结点可能有多个直接前驱和直接后继。
例如:树、图
划分方法二
集合—-数据元素间除“同属于一个集合”外,无其他关系
线性结构—一个对一个,如 线性表、栈、队列
树形结构—-一个对多个,如 树
图形结构–多个对多个,如 图
![集合、线性表、树、图](https://box.kancloud.cn/2016-02-25_56ce7d1a51788.jpg "")
存储结构分为:
顺序存储结构—–借助元素在存储器中的相对位置来表示数据元素间的逻辑关系
链式存储结构—-借助指示元素存储地址的指针表示数据元素间的逻辑关系
数据类型
定义:在一种程序设计语言中,变量所具有的数据种类
~~~
例如:基本数据类型:char int float double void
构造数据类型:数组、结构体、共用体、文件
~~~
### 抽象数据类型(ADTs:Abstract Data Types)
- **定义: 用户进行软件系统设计时从问题的数据模型中抽象出来的逻辑数据结构和逻辑数据结构上运算,而不考虑计算机的具体存储结构和运算的具体实现算法。**
*抽象数据类型可以用三元组表示:*
ADT = (D,S,P)
D:数据对象
S:D上的关系集
P:D上的操作集
#### ADT定义格式:
~~~
ADT 抽象数据类型名{
数据对象:<数据对象的定义>
数据关系:<数据关系的定义>
基本操作:<基本操作的定义>
} ADT抽象数据类型名
~~~