学习数据结构,就是学习数据的各种存储方案,包括线性表、栈和队列、串、数组和广义表、树和图。
数据结构究竟有哪些知识点需要学习呢?为了方便大家更直观地看到所有知识点,我制作了一张数据结构的思维导图,罗列了几乎数据结构所有的知识点。
(查看高清大图)

每个知识点都提供了对应的讲解文章,大家哪个知识点不懂,直接找相应的文章去看。
数据结构知识点总结
① 数据结构基础
——1、数据结构是什么
————一句话,数据结构是一门教你怎样存储数据的学科。
——2、逻辑结构和物理结构的区别
————逻辑结构描述的数据之间的关系;物理结构描述的是数据的内存中真实的存储状态。
——3、数据结构和算法的区别和联系
————数据结构研究的是怎样存储数据;算法研究的是解决问题的方法。
——4、时间复杂度和空间复杂度
————「时间复杂度」预估算法的执行时间;「空间复杂度」预估算法占用的内存大小。
——5、学习数据结构需要具备的基础
————学习数据结构,必须熟练掌握一门编程语言,再没别的了。
——6、学数据结构的好处
————1) 提升程序员的逻辑思维;
————2) 能力高低的分水岭;
————3) 程序性能好坏的评判标准。
② 线性表:用来存储逻辑关系为"一对一"的数据
——顺序表
————顺序表是什么
————顺序表的基本操作(增删查改)
————顺序表和数组的区别
——(动态)链表
————单链表
——————链表是什么
——————链表的基本操作(增删查改)
——————链表和顺序表的区别
————双向链表
——————双向链表的构建
——————双向链表的基本操作(增删查改)
————循环链表
————双向循环链表
——静态链表
————静态链表是什么
————静态链表的基本操作(增删查改)
————静态链表和动态链表的区别
——热门问题
————删除链表倒数第 N 个结点
————单链表的反转
————判断两个单链表相交
————判断链表中有环
③ 栈和队列
——栈:存储逻辑关系为 “一对一” 的数据,存取数据必须遵循 “先进后出” 的原则
————顺序栈
————链栈
————和栈有关的热门问题
——————递归实现栈的逆序
——————栈实现进制转换器
——————栈解决括号匹配问题
——————栈求表达式的值
——队列:存储逻辑关系为“一对一”的数据,存取数据必须遵循 “先进先出” 的原则
————顺序队列
————循环队列(顺序队列的变种)
————链式队列
————和队列有关的热门问题
——————两个栈实现一个队列
——————两个队列实现一个栈
④ 串
——串结构:专门用来存储多个逻辑关系为 “一对一” 的字符
——顺序存储
————定长顺序存储
————堆分配存储
——链式存储
————块链存储
——和串相关的算法
————BF算法(普通模式匹配算法)
————kmp算法(快速模式匹配算法)
⑤ 数组和广义表:用来存储多份逻辑关系为 ”一对一“ 的数据
——数组
————顺序存储
————压缩存储:如果数据中存储大量无效的元素,可以采用压缩存储的方式
——————顺序存储
————————三元组顺序表
————————行逻辑链接的顺序表
——————链式存储
————————十字链表
——广义表
————链式存储
————长度和深度
————广义表的复制
⑥ 树:专门存储逻辑关系为 “一对多” 的数据
——普通树
————顺序存储
——————双亲表示法
————链式存储
——————孩子表示法
——————孩子兄弟表示法
——二叉树:每个结点最多有 2 个孩子,这样树称为二叉树
————普通存储
——————二叉树的顺序存储结构详解
————链式存储
——————二叉树的链式存储结构(C语言详解)
————线索二叉树
——————线索二叉树:遍历效率更高的二叉树
——————双向线索二叉树:更高级的线索二叉树
————二叉树的遍历
——————先序遍历
——————中序遍历
——————后序遍历
——————层次遍历
——哈夫曼树
——和树相关的热门问题
————n个结点最多可以构建多少棵树?
————孩子兄弟表示法将森林转变成二叉树
————回溯算法
⑦ 图:专门存储逻辑关系为 “多对多” 的数据
——图的基本知识
————连通图
————生成树
————最小生成树
————重连通图
————最短路径
————关键路径
——图的存储
————顺序存储
————链式存储
——————邻接表存储结构
——————十字链表存储结构
——————邻接多重表存储结构
——图的遍历
————深度优先搜索算法(DFS)
————广度优先搜索算法(BFS)
——生成树(森林)
————深度优先生成树(森林)
————广度优先生成树(森林)
——找最小生成树
————普里姆算法(Prim算法)
————克鲁斯卡尔算法(Kruskal算法)
——求最短路径
————迪杰斯特拉算法(Dijkstra算法)
————弗洛伊德算法(Floyd算法)
——图相关的算法
————拓扑排序算法
⑧ 查找表:专门存储逻辑关系为 “无关系” 的数据
——静态查找表:只对查找表做查找和读取元素的操作,不改变查找表的存储结构
————顺序查找
————二分查找
————分块查找
————静态树表查找
——动态查找表:对查找表做插入或者删除操作,查找表的结构发生了改变
———— 二叉排序树
————平衡二叉树(AVL树)
————红黑树
————B-树
————B+树
————键树
————哈希表
⑨ 排序算法
——插入排序算法
————普通插入排序算法
————折半插入排序算法
————2-路插入排序算法
————表插入排序算法
——希尔排序算法
——冒泡排序算法
——快速排序算法
——选择排序算法
————简单选择排序
————树形排序
————堆排序
——归并排序算法
——基数排序算法