前言
数据结构是计算机内部组织、存储数据的方式,是相互之间存在一种或者多种关系的数据元素的集合。数据结构是一个二元组(D,R),其中D是数据元素的有限集,R是D上关系的集合。
分类
根据数据结构的定义,其可以按照数据元素之间的关系和内部物理存储来分类。
按照逻辑结构可以分为:
- 集合:数据元素之间除同属一种类型外不存在其他关系
- 线性结构:数据元素之间存在一对一的关系
- 树形结构:数据元素之间存在一对多的关系
- 图形结构:数据结构之间存在多对多的关系
按照物理结构(又称存储结构)可分为:
- 顺序存储:数据元素物理内存中按照顺序连续存放,每个存储节点只含有一个元素,相对位置即反应了元素之间的关系
- 链式存储:数据元素在物理内存不要求空间连续,其每个节点除包含本身存储的数据外还需要包括一组指针(指针数量>=1),其指向反映数据元素之间的逻辑关系
- 索引存储:数据元素存放在一组地址连续的空间中,同时还需要建立一个索引表用于索引存储节点或存储区间的位置
- 散列存储:通过散列函数和冲突解决方法,将关键字散列在有限的地址空间中,散列函数计算出的值解释为关键字的元素存储位置
常见数据结构
- 数组(Array)
- 链表(Linked List)
- 堆栈(Stack)
- 队列(Queue)
- 树(Tree)
- 图(Graph)
- 堆(Heap)
- 散列表(Hash)
抽象数据类型(ADT)
抽象数据类型(Abstract Data Type,简称ADT)是指一个数学模型以及定义在该模型上的一组操作。诸如表、集合、图和他们的操作一起可以看作是抽象数据类型。