攻克数据结构应用—这不手到擒来

这篇博客是一篇综合类的,主要是汇集各种数据结构的应用,也是补上之前偷懒没写的,就总结成一篇了

括号匹配

[ ( [ ] [ ] ) ] 是否匹配成功

栈中的情况:[  (  [  ] 	第四个匹配成功,弹出匹配成功的项
栈中的情况:[  (  [  ]	第六个匹配成功
栈中的情况:[  (  )		第七个匹配成功
栈中的情况:[  ] 		第八个匹配成功
该括号串匹配成功

前/中/后缀表达式

  1. 中缀表达式 => 后缀表达式
(a+b)/c*d-(e-f/g)+h/i  
// () > /* > +-
ab+c/d*efg/--hi/+
  1. 后缀表达式如何计算?
ab+c/d*efg/--hi/+
// 遇到符号就拿前面两个来运算
ab+ 	=> 	a+b
c/ 		=> 	(a+b)/c
d*		=> 	(a+b)/c*d
efg/ 	=> 	f/g
- 		=> 	e-f/g
-		=> 	(a+b)/c*d-(e-f/g)
hi/		=> 	h/i
+ 		=> 	(a+b)/c*d-(e-f/g)+h/i

递归

链接: https://pan.baidu.com/s/1UVyo93OVHX4SGz1HaPZ27w 提取码: n5jv
时间紧迫,递归最好还是有动画比较好懂

队列

双端队列

数据结构之队列
这个可以看之前的一篇博客,很简单

KMP算法

朴素匹配就不用多说,直接暴力即可
KMP算法主要考的是求next数组
在这里插入图片描述
在这里插入图片描述
判断next值就是判断模式串该从哪里开始匹配的问题,这里化了一条线,最终会在线右边第一个开始匹配
比如next3,经过向右移动,最终j=1,说明此时需要从1开始匹配,即next3=1;
又如next4,经过向右移动,再第三行这里匹配成功,此时j=2
在这里插入图片描述

KMP算法的优化

KMP优化算法主要考的是求nextval数组

以上个例子为基础,我们已经得到了未优化的next数组,如下
011234223456,此时我们只需要对其进行手动判断,如下

			a b a b a a a b a b a a
			0 1 1 2 3 4 2 2 3 4 5 6
// 1(a,0)表示第1个位置,内容为a,next数组值为0
第一个:		无需改变
第二个:		对应的是b,失败时跳转回1(a,0),因此不需要改变
第三个:		对应的是a,失败时跳转回1(a,0),因此改为1(a,0)对应的0	// 此时a匹配未成功,回到1(a,0)匹配也必定不成功 
			a b a 
			0 1 0
第四个:		对应的是b,失败时跳转回2(b,1),因此改为2(b,1)对应的1 // 此时b匹配未成功,回到2(b,1)匹配也必定不成功
			a b a b
			0 1 0 1
	...
最终结果为	a b a b a a a b a b a a
			0 1 0 1 0 4 2 1 0 1 0 4

二叉树⭐

二叉树的三种遍历及层次遍历

至少要能够手动的分析出树的结构
(1)先序遍历:根左右;(2)中序遍历:左根右;(3)后序遍历:左右根;(4)层次遍历:第一层、第二层…

例如:

  1. 前序遍历为DABEC,中序遍历为DEBAC,求后序遍历 CEDBA
  2. 前序遍历为ABCDEF,中序遍历为CBAEDF,求后序遍历 CBEFDA

线索二叉树

增加了手绘方式的图解

树、森林与二叉树的转换

看这里,我觉得我画的还行

哈夫曼树

因为前不久才写了最佳归并,不想写一遍哈夫曼了

并查集

并查集使用的是双亲定义方法(代码要记住)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

图⭐

最小生成树(Prim、Kruskkal)

  1. Prim算法
    时间复杂度O(|V|2),不依赖于|E|,适用于边稠密的图
    原理:每次都找跟已搜索结点毗邻的最短边
    在这里插入图片描述

  2. Kruskkal算法
    时间复杂度O(|E|log|E|),适用于边稀疏而顶点较多的图
    原理:每次都找最短的一条边
    在这里插入图片描述

最短路径(Dijkstra、Floyd)

  1. Dijkstra算法求单源最短路径问题
    时间复杂度O(|V|2),基于贪心策略,不适用于带有负权值的边在这里插入图片描述

  2. Floyd算法
    时间复杂度O(|V|3),基于动态规划策略
    允许图中带有负权值的边,但不允许有包含带负权值的边组成的回路
    在这里插入图片描述

有向无环图(DAG图)

在这里插入图片描述

链接: https://pan.baidu.com/s/1TSrAY3jOXG-0f1lX1QAnYw 提取码: aph2
咸鱼学长无敌!!!

拓扑排序,AOV网

注:一定不能有环路
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

关键路径

  • 从源点(开始顶点)到汇点(结束顶点)的所有路径中,具有最大路径长度的路径称为关键路径

  • 关键路径不一定唯一,因此缩短某一条关键路径的某一个活动时间不一定可以缩短时间,要缩短所有关键路径的交集边才可以

查找

二叉排序树

平衡二叉树

红黑树

B树和B+树

散列表(等更~~)

排序

外部排序的应用(败者树、置换-选择排序、最佳归并树)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值