1.绪论
算法+数据结构 = 程序设计
数据,数据元素,数据项,数据对象,数据结构,数据类型,原子类型,结构类型,抽象数据类型
四类基本结构:集合,线性结构,树形结构,图状结构
分类:线性结构与非线性结构
算法设计要求
时间复杂度,空间复杂度
2.线性表
线性表
顺序表示
直接前驱与直接后继
插入元素的平均移动次数n/2
删除元素的平均移动次数(n-1)/2
查找(n+1)/2
链式表示
头插法,尾插法
循环链表,双向链表,双向循环链表
3.栈与队列
栈,队列,双队列(双端队列)
顺序栈,链式栈
栈的应用:数制转换,括号匹配,表达式求值
输出受限双队列,输入受限双队列
链式队列(头指针,尾指针)
队列的顺序表示:f指向队头元素,r指向队尾元素后一空单元
(r+1)% maxleng==f 为满队列
(f==r)为空队列
4.串
串,空串,空格串,字串
顺序存储,链式存储
5.数组与广义表
数组,广义表
矩阵压缩,三元组表,十字链接表
6.树
树
树的层,深度
有序树,无序树
叶子的数目=度为2的结点数目+1
结点i的层号
完全二叉树(顺序二叉树)
顺序存储,链式存储
二叉链表,三叉链表,静态链表
线索二叉树 空指针域数: n*2-(n-1)=n+1,0表示前驱或后继,1表示左右孩子
树的存储结构:
双亲表示法/数组表示法/顺序表示法
孩子表示法/链接表表示法
孩子兄弟表示法/二叉树表示法/二叉链表
孩子链表表示法/单链表表示法
带双亲的孩子链表表示法
先根遍历,后根遍历
树的路径长度PL,树的带权路径长度WPL
哈夫曼树,哈夫曼编码
7.图
图
弧头,弧尾
完全图,有向完全图,网,子图,度
无向图:连通图,极大连通子图,连通分量,极小连通子图,生成树
有向图:强连通图,极大强连通子图,强连通分量
有向树:有且仅有一个顶点的入度为0,其余顶点的入度为1
图的存储结构
数组表示法/邻接矩阵
邻接表(无向图,有向图,有向网),逆邻接表(有向图),十字链表(有向图),邻接多重表(无向图)
DFS,BFS
最小生成树
prim算法(选点) kruskai算法(选边)
网的最小生成树,删除权最大的边
有向无环图(DAG),AOV网:以顶点表示活动,弧表示活动之间的优先关系的DAG图
拓扑排序
AOE网:带权的有向无环图,关键路径,最短路径
Dijkstra算法,Floyd算法
9.查找
静态查找,动态查找,平均查找长度
静态查找表
顺序查找 成功:(n+1)/2 失败:n+1 平均:3(n+1)/4
折半查找 (n+1)/n*log2(n+1)-1
分块查找法
动态查找表
二叉排序树(二叉查找树),平衡二叉树
哈希表,哈希函数,直接定址法,除留余数法,平方取中法,折叠法(边界折叠法,移位折叠法),数字分析法,随机数法
开放地址法(线性探查再散列,二次探查再散列),链地址法,建立公共溢出区,再哈希法
10.排序
插入排序:直接插入排序,折半插入排序,希尔排序
选择排序:简单选择排序,堆排序
归并排序
交换排序:冒泡排序,快排
基数排序