1. 为什么学习数据结构(Data Structure)?
- 程序 = 数据结构 + 算法
程序不过就是一个获取数据、处理数据,展示数据的一个综合体。
数据结构就是一个装载数据,并可以对数据进行简单处理的有效工具。
如何利用合适的结构,处理数据,达到一个空间和时间的平衡,就是我们数据结构所需要学习的内容。
2. 数据结构需要学习的内容
数据结构包含两方面内容:一是组成集合的数据元素,二是数据元素之间存在的关系。
将上面的内容展开,数据结构需要学习的内容主要有以下几点:
- 逻辑结构 (logic structure):
- 存储结构 (store structure)
- 常用操作 (operations)
- 性能 (performance)
- 适用场景
2.1 逻辑结构
- 定义:逻辑结构是指,在逻辑上,数据结构的排列方式。它是给人直观上的感受。(此处语言待斟酌)
可以用一个二元组表示:
<center> G = (D,R) </center>
D:表示数据元素的有限集合
R:表示在D上关系的有限集合(个人感觉关系可以理解为运算操作)
- 分类:
- 集合:元素之间除了同属一个集合没有其他关系
- 线性结构:数据元素之间有着一对一的关系数据元素之间有一种先后关系,每一个节点最多有一个前驱结点和后驱节点。
- 树形结构:结构中元素存在着一种一对多的关系,即每一个元素向上与一个元素相连(称为双亲节点),向下与多个元素相连(孩子节点)
- 图形结构(网状结构):元素之间存在着多对多的关系,元素中任意元素都可以有关联。
2.2 存储结构:
定义:存储结构是指数据在计算机中的如何存储的,也可以称为物理结构。
分类:顺序存储、链式存储、索引存储和散列存储
- 顺序存储:数据元素在计算机中是按顺序依次存储
- 链式存储:数据元素额外存储下一个元素的存储地址,元素之间在存储位置上不需要相邻。
- 索引存储:在原有数据结构存储结构基础上,额外简历一张索引表,索引表中每一项由关键字和地址组成。
- 散列存储:通过构造散列函数来确定元素存储位置。
2.3 运算
- 插入
- 删除
- 修改
- 计总
- 是否为空
- 是否满
- 添加
3. 如何学习数据结构
常用数据结构由数组、栈、链表、队列、树家族、图
针对每一种数据结构从逻辑结构、存储结构和运算分析,并通过java语言对各种数据结构进行实现,比较每种数据结构在各种运算上的性能。