文章目录
- 前言
- 数组
- 多维数组的原理、作用
- 稀疏数组
- 链表
- 单向链表的增删改查的具体实现思路
- 约瑟夫环问题(可不学)
- 双向链表
- 树
- 二叉搜索树
- 中序线索二叉树
- 哈夫曼树的编码与译码
- 红黑树
- B树
- B+树
- 堆
- 顺序与链式结构队列实现
- 优先队列排序算法(重点)
- 栈
- 顺序存储结构与链式存储结构栈
- 单调栈算法(可不学)
- 图
- 邻接矩阵与邻接表的深度优先遍历
前言
Github代码仓库地址
这一篇文章是因为有几个玩的比较好的朋友觉得我DS学的还行,然后他们也要准备考研了(有24也有25的),就希望我出一篇讲DS的文章,所以就有了这篇文章。
(毕竟现在的互联网好像是不论是小中大厂好像都喜欢问算法哈哈哈,也算给自己复习一下)
其实掌握这些数据结构最快速的方法就是先了解基础,自己动手实现一边,然后分析这些结构可以用在什么场景下。
然后基于他们的特性去刷题。
比如我做树的题的时候,一定最先想到的就是递归,左子树递归,右子树递归等操作。
要求O(1)时间复杂度想到的就是Hash表,要求无额外空间使用,那就是原地算法。
字符串顺序颠倒,反转,想到手摇算法等等。
附一张LeetCode刷题情况(哈哈哈,很多都是补卡的)。
反正刷算法,最重要的应该就是perseverance。
数组
多维数组的原理、作用
多维数组的原理与作用
稀疏数组
稀疏数组
链表
单向链表的增删改查的具体实现思路
详解单链表的增删改查的实现
单向链表的CRUD
约瑟夫环问题(可不学)
约瑟夫环问题
双向链表
双向链表的CRUD
树
二叉搜索树
顺序与链式存储结构,前中后序以及层序遍历
中序线索二叉树
中序线索二叉树的实现
哈夫曼树的编码与译码
哈夫曼树的编码实现
哈夫曼树的译码实现
红黑树
B树
B+树
堆
顺序与链式结构队列实现
顺序与链式存储结构队列实现
优先队列排序算法(重点)
优先队列排序算法我第一次见到是再MySQL中。
对于MySQL5.6之后,会有一个算法叫做优先队列排序算法,大概方式就是维护一个大小为limit X中X数量的大顶堆,然后遍历所有数据并替换大顶堆的值,这样子就不需要对无用的数据进行排序了。并且我也在2023的考研题目中一眼就看到了基于优先队列排序算法的题目,所以我感觉这个算法思路还是很妙的。
栈
顺序存储结构与链式存储结构栈
顺序栈和链栈详解
代码实现与讲解
单调栈算法(可不学)
图
邻接矩阵与邻接表的深度优先遍历
图操作之邻接矩阵与邻接表的深度优先遍历