根据MOOC上课程总结,文章目录为:
一、引论
- 数据结构的基本概念
- 数据的逻辑结构和存储结构
- 算法及其时间复杂度
- 时间复杂度及应用
二、线性表
- 线性表的概念及顺序存储
- 单链表的概念及其基本操作
- 建立单链表
- 循环链表
- 双向链表
- 一元多项式的表示和运算
三、栈和队列
- 栈的概念及其基本操作
- 栈的概念及其基本操作—双端栈
- 栈的应用—递归及汉诺塔问题
- 栈的应用—迷宫实验
- 队列的概念及基本操作
- 队列的概念及应用—链队列
- 表达式的求值问题
- 递归与分治算法
四、串
- 串的基本操作
- 串的简单模式匹配
- 串的KMP模式匹配算法
- 模式串的next值计算思
- 模式串的next值计算实现
- 模式串的nextval值
五、多维数组和广义表
- 数组的定义与顺序存储
- 矩阵的压缩存储
- 三元组矩阵的快速转置
- 广义表
六、树
- 二叉树的性质
- 二叉树的顺序存储
- 二叉树的遍历
- 统计叶子结点
- 计算二叉树的高度
- 二叉树的恢复建立
- 二叉树的非递归遍历
- 线索二叉树
- 线索二叉树的遍历
- 树和森林
- 树与森林的遍历
- 哈夫曼树
- 哈夫曼编译码
- 哈夫曼编码算法
- 解空间树及其相关算法
七、图
- 图的基本概念
- 图的存储
- 图的深度优先遍历
- 图的广度优先遍历
- 图的最小生成树-Prim算法思想
- 图的最小生成树-Prim算法实现
- 图的最小生成树-Kruskal算法
- 图的拓扑排序思想
- 图的拓扑排序实现
- 图的关键路径思想
- 图的关键路径实现
- 图的单源最短路径-Dijkstra思想
- 图的单源最短路径-Dijkstra实现
- 贪心算法
八、查找
- 顺序查找
- 折半查找
- 二叉排序树的基本概念与查找
- 二叉排序树的插入与生成
- 二叉排序树的删除
- 哈希表基本概念
- 哈希函数
- 哈希处理冲突
九、排序
- 排序基本概念
- 直接插入排序
- 希尔排序
- 冒泡排序
- 快速排序
- 选择排序
- 树形排序
- 堆排序
- 归并排序
- 基数排序
正文
一、引论
(一)数据结构的基本概念
niklaus wirth计算机科学家说过:
算法+数据结构=程序。
algorithm+data structures=programs
程序设计:为计算及处理问题编制的一组指令集和。
算法:处理问题的策略。
若有一个实际的问题需要用程序设计实现,那么第一步就要先做数据抽象,抽象出它的数学模型。然后对数据进行组织,如何组织、存储、计算就是数据结构要研究的范畴。
对于数值型数据如结构静力分析计算(线性代数方程组)、全球天气预报(环流模式方程/球面坐标)比较好处理,但是对于很多非数值型的计算,程序设计要解决两个关键问题:
①表示:对象及其关系在计算机中的表示。只有对象及其相互关系已存储在计算机中,才能被进一步处理。
②操作:对对象进行处理,访问。
A、数据结构的分类
1、线性结构
例子1:超市商品管理。对商品的各种信息如何加以组织和存储。
数据对象:商品。如W1是方便面,W2是洗发水,W3是鸡精。。。这是一个表结构。
关系:线性。W1后面是W2,W2后面是W3。。。
2、树型结构
例子2:计算机对弈。象棋 五子棋 三子棋等。
操作对象:格局(棋盘状态)
元素间的关系:树(有比赛规则决定)
西北大学郝克刚博导编程的感悟:
3、图结构
例子3:元素间的关系为图。