线性表,栈,队列,串,数组,广义表,树,二叉树,图算法
重点是线性表,二叉树数组
每种数据结构须要掌握,添加、更新、删除、查询、排序等操做的实现网络
学习数据结构的四种境界:数据结构
境界1:听懂理论,听懂算法思路函数
境界2:完成主要数据结构基本算法的实现(理论+实践,数据结构入门)性能
境界3:完成更多数据结构更多算法的实现学习
境界4:融会贯通,触类旁通,在后续开发中综合应用数据结构知识。优化
一种是数据结构的逻辑层面,即数据的逻辑结构。指针
一种是存在于计算机的物理层面,即数据的存储结构。对象
线性结构:有且只有一个开始节点和终端结点,而且全部节点最多只有一个直接前驱和直接后继。
线性表是一个典型的线性结构。
表和树是最经常使用的两种高效数据结构。
集合结构:相似数学里的集合。
线性结构:数据元素之间存在一对一的线性关系的数据关系
树状结构:除了第一个元素之外每一个元素有且仅有一个直接前驱元素,可是能够有多个后继元素。一对多的关系。
网状结构:每一个数据能够有多个前驱、多个后继。多对多的关系。
优势:节省存储空间。分配的存储空间用来存储结点的数据,结点之间的逻辑关系不占用存储空间。能够实现对结点的随机存取,一个结点对应一个序号,经过序号获得存储地址,查询方便。
缺点:插入和删除操做须要移动元素,效率低。
每一个结点有数据域和指针域组成,元素之间的逻辑关系经过存储结点之间的连接关系反映出来。
特色:1 比顺序存储结构密度小。
2 逻辑上相邻的物理结点没必要相邻。
3 插入、删除灵活(没必要移动结点,只须要改变其中的指针)。
4 查询慢
引用型运算:不改变数据结构中原有的数据元素的状态,只根据须要读取某些信息
加工型运算:改变数据结构中数据元素的状态,如内容,个数
对特定问题求解步骤的一种描述,是指令的有限序列。其中每一条指令表示一个或多个操做。
有穷性:一个算法必须在有限个步骤以后结束
肯定性:一个算法的每个步骤都有其确切的含义,相同的输入必然有相同的输出
可行性:算法中的每一步必须能够经过基本运算的有限次执行实现
输入:零个或多个,取决于特定的数据对象集合。
输出:一个或多个,输出与输入之间存在某种特定的关系。
正确:算法的执行结果知足预先规定的功能和性能要求
可读:一个算法应当思路清晰,井井有条、简单明了、易读易懂,一个算法不只是让机器来执行,也是让人来读的
健壮:当输入不合法数据时,算法可以进行适当处理,而不会产生莫名其妙的输出或者引发其余的后果
高效:算法应当具有良好的时空性能
时间复杂度:一个算法在计算机上转换成程序并运行所须要的时间,由问题规模决定。
主要取决于如下因素:
空间复杂度:算法运行从开始到结束须要的存储量。
主要由如下构成: