数据结构与算法
第一章 绪论
-
逻辑结构:
线性结构(线性关系)
树形结构(层次关系)
图(网状关系) -
存储结构:
顺序存储(内存中一段连续的地址空间)
链式存储(数据元素在内存中分散存放,彼此间通过指针连接)
索引结构(B+树)
散列结构(散列表) -
基本运算/操作
(算法) -
时间复杂度:运行速度快慢的评判标准
第二章-第四章 (线性结构)
第二章 线性表
- (顺序表、链表)
- 插入/删除
第三章 栈和队列
两个工具
-
栈:入栈/出栈(后获取的元素先使用)
-
队列:入队列/出队列(先获取的元素先使用)
-
本质上:插入/删除
栈的应用:表达式的表示与求值问题
-
递归:几乎所有的递归问题都可以利用栈实现非递归的算法(函数自己调用自己)
第四章 数组与字符串
-
数组:二维数组(矩阵)
矩阵的压缩存储 -
字符串:模式匹配(大纲已去)
第五章 树与二叉树
-
树的定义和术语
-
二叉树
二叉树的性质 -
二叉树的遍历
-
树和森林
树/森林 与 二叉树 的互相转换 -
堆和优先权队列
-
哈夫曼树与哈夫曼编码
.jpg 有损压缩:DCT 无损压缩:哈夫曼编码
第六章-第八章 查找/搜索
第六章 静态搜索
- 线性结构去实现查找表
第七章 动态搜索
- 插入/删除
- 树表结构去实现查找表
- 二叉搜索树
- 二叉平衡树
- B-树
第八章 散列表(哈希表)的搜索
第九章 图
一个大问题下的两个小问题
- 图的存储—邻接矩阵、邻接表
- 图的遍历—深度、宽度
- 有向无环图的应用—AOV网(拓扑排序)、AOE网(关键路径)
- 最小代价生成树—普里姆算法、克鲁斯卡尔算法
- 最短路径—迪杰斯特拉算法、佛洛依德算法
第十章 内排序
- 简单选择排序
- 冒泡排序
- 直接插入排序
- 快速排序
- 两路合并排序
- 堆排序
C语言
- 变量:内存中的一段存储空间
- 函数:运算
- 数组:顺序存储结构
- 指针:链式存储结构
- 结构体:一种构造类型