
数据结构
源梦想
考研结束,最近开始整理专业课各种难点,并尽量用自己的理解发布给大家。(最近有亿点点忙,更新进度有点慢哈)
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
B树的插入,删除。
以5阶B树为例。插入位置最底层中的某个非叶子结点,且有序。原创 2023-05-27 16:15:15 · 409 阅读 · 0 评论 -
平衡二叉树的插入,删除以及平衡调整。
先左旋后右旋:先让A的左孩子B的右子树的根节点C左上旋提升到B位置,在让C右上旋提升到A位置。先右旋后左旋:先让A的右孩子B的左子树的根节点C右上旋提升到B位置,在让C左上旋提升到A位置。由于各种的插入导致的不平衡,每次调整都是最小不平衡子树。LL:由于在结点A的。RR:由于在结点A的。LR:由于在结点A的。RL:由于在结点A的。原创 2023-05-27 10:28:08 · 2188 阅读 · 0 评论 -
红黑树的插入。
①每个结点或是红色,或是黑色。②根结点是黑色的。③叶结点(虚构的外部节点NULL结点)都是黑色的。④不存在两个相邻的红结点。⑤对每个结点,从该结点到任一结点的简单路径上,所含黑节点数一样。原创 2023-05-27 09:51:31 · 283 阅读 · 0 评论 -
查找判定树(顺序查找与折半查找)
注2:如果有偶数各元素,则mid分割,左半比右半少一个元素。注1:如果有奇数各元素,则mid分隔,左右两部分相等。原创 2023-05-26 21:34:33 · 2674 阅读 · 3 评论 -
图的拓扑排序AOV网,有向无环图DAG描述表达式,关键路径AOE网。
①Ve(k) : 事件Vk的最早发生时间。②Vl(k) : 事件Vk的最迟发生时间。③e(i) : 活动ai的最早开始时间。④l(i) : 活动ai的最迟开始时间。⑤d(i):余量 d(i) = l(i) - e(i)。注:d(i) = 0的路径,即为关键路径。原创 2023-05-24 09:27:17 · 765 阅读 · 0 评论 -
图的遍历,最小生成树,最短路径算法的手算。
按照某种规则沿着图中的边对图中的所有顶点访问一次且仅访问一次。注:图是一种特殊的树。原创 2023-05-20 14:05:04 · 873 阅读 · 0 评论 -
遍历序列构造二叉树,手算。
注:必须含有中序有前序与中序遍历特性知,前序第一个必为根节点。再有中序借助这个根节点,将遍历序列一分为二,如此下去。注:记得验证,遍历这个二叉树得到前序,中序是否与原来相等。原创 2023-05-10 19:26:16 · 174 阅读 · 0 评论 -
二叉树的先,中,后,层次遍历机算和手算。
注:“结点展开法并非术语”注:“从你的全世界路过法并非术语”原创 2023-05-10 19:16:20 · 193 阅读 · 0 评论 -
模式串匹配算法(朴素模式匹配与KMP)的机算与手算。
其实就是暴力匹配。使用双指针 i (指向主串) j (指向模式串)从主串 S 第一字符起,与模式串 T, 第一个字符比较,①若相同,则 i 与 j 统一向后移②若遇到 i 与 j 指向字符不同,回溯 i j 指针。继续如此,直至匹配成功j超出模式串,或者 匹配失败 i 超出主串。原创 2023-05-09 20:39:20 · 645 阅读 · 0 评论 -
栈在表达式中的应用(中/后前缀的转换)机算,手算模拟。
初始化一个栈,用于保存从 左往右 依次扫描,会遇到三种情况:1.遇到,直接加入后缀表达。2.遇到①遇到 “(” 入栈。②遇到 “)” 依次弹出栈内运算符并加入后缀表达式,直到弹出 "("为止。(注: “(” 不加入后缀表达式)3.遇到依次弹出栈中优先级 高于或等于 当前运算符的所有运算符,并且加入后缀表达式中,直到碰到 “(” 或者 栈空为止。注:处理完所有字符后,将栈中剩下的运算符依次弹出,并加入后缀表达式。原创 2023-05-08 21:31:09 · 633 阅读 · 0 评论 -
VS2019报错:XXX.exe 已触发了一个断点,malloc函数申请空间时会报错。
1.报错情景2.原因分析这类报错,大部分都是因为,空指针,非法访问(造成非法访问的原因有很多,比如:空间非法读取,即你没有申请这块空间,但是你试图要读取。),栈溢出等等。我这个报错,是由于非法访问。我的结构体如下:可是我在申请空间的时候,申请的是个TreeNode指针类型的数据,而非TreeNode结构体类型的空间。如下:有什么不同呢?差别很大:在32位系统中,一个指针只占用4B的内存,而我定义的结构体中有一个int数据,两个指针共12B。那我报错的原因就显而易见了,就是由于我申原创 2022-04-17 10:34:31 · 3774 阅读 · 0 评论 -
数据结构大作业--迷宫问题
数据结构大作业–迷宫问题上图:代码有详细注解迷宫自动生成问题单独讨论当然由于出口随机的原因右小概率会出现bug(这无伤大雅)首先我们都知道,迷宫只有一条正确的道路。这个时候请把自己想象成一只地鼠,要在这个区域不停的挖,直到任何一块区域再挖就会挖穿了为止。我们挖的道路就像树结构,树上有很多的分支,分支也有子分支,每个子分支都不能相交,相交了就说明墙被挖穿了,那么此时的迷宫就可能存在多条正确道路,这不是我们想看到的。那么基于唯一道路的原则,我们向某个方向挖一块新的区域时,要先判断新区原创 2021-05-04 14:50:29 · 3136 阅读 · 1 评论 -
常见的时间复杂度解析
常见的时间复杂度解析常见的时间复杂度① 常数阶O(1)② 对数阶O(Log2n) --2为底数,n为对数③ 线性阶O(n)④ 线性对数阶O(nlog2n) --2为底数,n为对数⑤平方阶O(n^2)⑥立方阶O(n^3)⑦k次方阶O(n^k)常见时间复杂度????小到大:O(1)<O(log2n)<O(n)<O(nlog2n)<O(n^2) <O(n ^3)<O(n ^k)<O(2 ^n)1.常数阶O(1)无论代码行有多少行,只要是没有原创 2021-04-18 12:38:01 · 2759 阅读 · 0 评论 -
迷宫问题--小球找出口(经典递归问题)
迷宫问题–小球找出口(经典递归问题)递归的经典案例----小球找路说明:小球得到的路径,和程序设置的找路策略有关:如小球行走的顺序依次为(上下左右,或者上左下右)其路径都不相同 迷宫问题-----小球找路思路分析① 使用二维数组模拟地图,小球从(1,1)出发;② 如果小球在数组的右下角,即(6,5)位置,表示小球找到的路游戏通关;③ 约定:当数组元素为:0 的时候,表示这是路径,且没有走过1的时候表示墙,2表示通路可走;3表示该路已经走过了,且时死路;约定原创 2021-04-18 11:56:27 · 2170 阅读 · 0 评论