为什么要学习数据结构
学习通用性知识,突破技能瓶颈 为了提高自己的编程技术水平,决定吧数据结构和算法好好学习一遍。至于为什么用swift,因为我是iOS开发,哈哈。喜欢用swift而已。
学习方法
- 用swift改造《大话数据结构》的代码
- 阅读第一遍的时候从头到尾,摘抄一些重点知识
- 写出算法实现+适当的练习
数据结构绪论
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合
按照视点不同,我们把数据结构分为逻辑机构和物理结构。
- 逻辑结构:数据对象中数据元素之间的相互关系
- 物理结构:数据的逻辑结构在计算机中的存储形式
逻辑结构:
- 集合结构:集合结构中的数据元素除了同属于一个集合外,它们之间没有其他关系。
- 线性结构:线性结构中的数据元素之间是一对一的关系
- 树形结构:树形结构中的数据元素之间存在一对多的层次关系
- 图形结构:图形结构的数据元素是多对多的关系。
物理结构:
- 顺序存储结构:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。(数组)
- 链式存储结构:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。(单链表、双链表)
数据类型
数据类型 = 集合 + 操作
数据类型: 是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。
抽象数据类型
抽象数据类型(Abstract Data Type,ADT):是指一个数学模型及定义在此模型上的一组操作。
需要注意的是:抽象数据类型的定义仅仅取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现没有关系。而且,抽象数据类型不仅仅指那些已经定义并实现的数据类型,还可以是计算机编程者自己定义的数据类型。 抽象数据类型的标准格式:
ADT 抽象数据类型名
Data
数据元素之间的逻辑关系定义
Operation
操作1
初始条件
操作结果描述
操作2
.....
操作n
......
endADT