1.1.1基本概念和术语
1.数据
数据是信息的载体,此处是指计算机程序加工的原料;
2.数据元素
数据元素是数据的基本单位,如学生的信息记录,每一条都是一个数据元素(其中:姓名、年龄、ID等每个字段都是一个数据项);
3.数据对象
具有相同性质的数据元素的集合,是数据的一个子集,比如一个包含几百名学生的数据的文件
4.数据类型
数据类型是一个值的集合和定义在此集合上的一组操作的总称。
(1)、原子类型。值不可再分,如:整数(int)、浮点数(float)、布尔型(bool)、字符型(char)、指针类型等
(2)、结构类型。值可再分割为若干成分的数据类型,如:数组、结构体(struct)、共同体(union)、字符串、对象
(3)、抽象数据类型(ADT),一个数学模型及定义在数学模型上的一系列操作。ADT=数据结构 + 操作,只关心功能(封装数据与操作),不关心底层怎么实现。如:栈(stack)、队列(Queue)、链表(LinkedList)、树(Tree)、图(Graph)、字典/映射(Map),
抽象数据类型=逻辑结构+存储结构+数据的运算=数据对象+数据关系+基本操作集
5.数据结构
数据结构是相互之间存在一种或多种特定关系的数据元素的集合,简单的来说就是把零散的数据按照一定规则摆在一起,如:栈(stack)、队列(Queue)、链表(LinkedList)、树(Tree)、图(Graph)、字典/映射(Map),这些看存储时是数据结构,看操作时是抽象数据类型。
表格
| 名称 | 作为数据结构(看存储) | 作为抽象数据类型(看操作) |
|---|---|---|
| 数组 | 连续内存存放同类型数据 | 一般不算标准 ADT,仅基础存储结构 |
| 链表 | 节点 + 指针串联,空间不连续 | ADT:定义增、删、查节点的操作 |
| 栈 | 可用数组 / 链表实现存储 | ADT:规则先进后出,仅支持入栈、出栈、判空 |
| 队列 | 可用数组 / 链表实现存储 | ADT:规则先进先出,仅支持入队、出队、判空 |
| 树 | 分层分支式存储 | ADT:定义遍历、增删节点、查找等操作 |
| 图 | 顶点 + 边构成网状存储 | ADT:定义遍历、查路径、增删顶点 / 边等操作 |
| 哈希表 | 哈希数组 + 映射存储 | ADT:定义键值对增、删、查 |
1.1.2 数据结构三要素
1.数据的逻辑结构
逻辑结构是数据元素之间的逻辑关系,不关心数据如何存储,只关心元素之间怎么相连。逻辑结构独立于存储结构,从实际问题的角度出发
如:集合(元素之间没有关系,只是凑成一组)、线性结构(元素一对一,排成一条线)、树形结构(元素一对多)、图形结构(元素多对多)
2.数据的存储结构
存储结构是数据结构在计算机中的表示(物理结构),在存储时不止存储数据的值,也存储数据元素之间的关系
(1)、顺序存储。相邻元素存储在物理位置上也相邻的位置
(2)、链式存储。借助元素存储地址的指针来表示元素之间的逻辑关系。
(3)、索引存储。在存储元素同时,建索引表。索引表的每项称索引项。
(4)、散列存储。根据元素关键字(如学号2006110或者姓名张三)直接计算出该元素的存储地址,也叫哈希(Hash)存储。