绪论
1.1 数据结构的目的
数据结构作为计算机科学的一门分支科学,主要研究非数值计算的程序设计问题中计算机的操作对象、对象之间的关系和操作等。
数据结构的三要素为数据的逻辑结构、数据的存储结构以及数据的操作。
有一个著名的公式:程序=数据结构+算法
1.2 数据结构的基本概念
数据:所有能输入到计算机中的去描述客观事务的符号
数据项:有独立含义的数据的最小单位 (描述事物的其中一项指标) --成员
数据元素:数据的基本单位,也称为节点或记录(用于描述一个完整的事物) --结构体
数据结构:数据元素+数据之间的关系组成的集合
算法:狭义 数据结构具有的功能 广义 算法是解决问题的方法
1.3 数据结构的三个方面:
1.数据的逻辑结构
2.数据的存储结构
3.数据结构的运算
1.3.1 四种基本的逻辑结构:
集合结构:数据元素之间同属一个集体外,没有其他关系
线性结构:数据元素之间存在一对一关系
例如: 数组、链表、功能受限的表(栈、队列)
树形结构:数据元素之间存在一对多关系
例如:普通树、二叉树、完全二叉树、满二叉树、有序二叉树
图形结构:数据元素之间存在多对多关系
例如:图的邻接表表示、图的邻接矩阵表示
1.3.2 数据结构的存储方式(物理结构)
1.顺序结构 (在一块连续的内存空间上存储元素、元素之间的关系)
数据存在在一段连续的空间,用数据元素在存储器的位置来表示数据元素的关系
优点:随机访问,访问效率极高(速度快),不易产生内存碎片
缺点:空间利用率低,对内存的要求高(必须是整块的内存),元素的添加和删除不方便
2.链式结构 (非顺序) 元素随机存储在内存空间中,元素中存储指向其他元素的地址
结构的每个数据元素存储在彼此独立的内存中,每个元素中增加一个或多个数据项用来存放另一个元素的地址,表示元素之间的关系
优点:插入,删除元素方便 ,空间利用率高, 对内存要求低
缺点:只能逐个遍历,不能随机访问, 查询效率低(速度慢),容易产生内存碎片
逻辑结构和存储结构的关系
表:顺序/链式
树:顺序/链式
图:混合
注意:每一种逻辑结构采用什么物理结构实现,没有明确规定,通常根据实现的难易程度,以及在时间和空间复杂度的要求,再选择合适的物理结构,也有可能是顺序和链式混合存储
1.3.3 数据结构的运算:
1.创建
2.销毁
3.添加元素
4.删除元素
5.修改元素
6.查找元素
7.排序
8.遍历
9.访问