数据结构定义
- 数据的逻辑结构
- 数据的存储结构(物理结构)
- 数据的运算
逻辑结构
- 表示
- 图表表示
- 二原组表示 B = (D, R)
- 类型
- 集合
- 线性结构
- 树形结构
- 图形结构
1 | # 树形结构 |
存储结构
- 顺序存储 (dict)
- 链式存储 (*next)
- 索引存储 (key, address,查找效率高,需建立索引表)
- 哈希(散列)存储(哈希函数计算出存储地址,只对数据进行存储,不对逻辑关系存储)
数据运算
常用的运算有检索、插入、删除、更新和排序等。
运算定义 | 运算实现 | |
---|---|---|
逻辑结构 | 映射=> | 存储结构 |
数据类型和抽象类型
- 数据类型
- C/C++ 常用的数据类型
- 基本数据类型(
int
,short int
,long int
,unsigned int
,bool
,float
,double
,char
) - 指针类型(
int i,*p;
i 是整型变量,p 是指针变量。&i
表示变量 i 的地址,将 p 指向 i 的运算为p=&i
。*p
是取 p 所指变量的值。) - 数组类型 (
int a[10]
) - 结构体类型
- 共用体类型(共享存储单元)
- 基本数据类型(
- 存储空间分配
- 静态分配方式(
int a[10];
) - 动态分配方式(用
malloc()
函数为指针变量分配连续的空间,不需要时用free(p)
释放p所指向的空间。)
- 静态分配方式(
- C/C++ 常用的数据类型
1 | # 结构体类型 |
1 | # 动态存储空间分配 |
- 抽象类型(Abstract Data Type)
抽象类型有两个重要特征,数据抽象和数据封装。抽象类型由数据逻辑结构和运算定义两部分组成。
ADT | ADT的实现 | |
---|---|---|
运算定义 | 运算实现 | |
逻辑结构 | 映射=> | 存储结构 |
示例
1 | ADT 抽象数据类型名(例:Complex) |