【30天】算法与数据结构集训营
文章平均质量分 89
零基础带你学习算法与数据结构,30天算法与数据集训营,带你掌握数据结构的奥秘,本专栏适用于考研学习,期末复习,技能进阶,大厂面试者,赶快收藏起来吧!
优惠券已抵扣
余额抵扣
还需支付
¥19.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
王小王-123
【私信必回】CSDN博客专家、内邀精英签约作者,CSDN年度优秀创作者,华为云享专家,阿里云专家博主、腾讯云、简书、InfoQ、51CTO等开源社区创作者。左手诗情画意,右手代码人生,欢迎一起探讨技术的诗情画意!
展开
-
复盘100道数据结构题型总结与案例分析
对于广义表 A=(a, ,b,(c,d) ,(e,(f,g))),运算 head[tail[head[tail[tail[A]]]]]的值是______(d),注意tail就是除去head的全部,把握这一原则,应该就没有问题了。问该完全二叉树有____个叶子结点,有____个度为 2 有结点,有_____个度为 1 的结点。设树 T 的度为 4,其中度为 1,2,3,4 的结点个数分别为 6,4,1,1。中有叶子结点有多少?n 个结点的二叉链表,有 n-1 个非空链域,有 n+1 个空的链域。原创 2022-12-18 02:35:39 · 828 阅读 · 4 评论 -
【完结】算法与数据结构【30天】集训营——图论知识总结及相关课后习题讲解案例(30)
( 1)在一个图中,所有顶点的度数之和等于图的边数的()倍。答案: C(在最开始的概念中提到过)( 2)在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的()倍。答案: B解释:有向图所有顶点入度之和等于所有顶点出度之和。( 3)具有 n 个顶点的有向图最多有()条边。答案: B 解释:有向图的边有方向之分, 即为从 n 个顶点中选取 2 个顶点有序排列, 结果为 n(n-1)。( 4) n 个顶点的连通图用邻接距阵表示时,该距阵至少有 () 个非零元素。A. n。原创 2022-11-21 19:06:19 · 721 阅读 · 3 评论 -
算法与数据结构【30天】集训营——图的应用之最小生成树、最短路径、拓扑排序、关键路径(29)
现实生活中的许多问题都可以转化为图来解决。 例如, 如何以最小成本构建一个通信网络,如何计算地图中两地之间的最短路径,如何为复杂活动中各子任务的完成寻找一个较优的顺序等。本文将结合这些常用的实际问题,介绍图的几个常用算法,包括最小生成树,最短路径、拓扑排序和关键路径算法。原创 2022-11-21 16:56:02 · 733 阅读 · 2 评论 -
算法与数据结构【30天】集训营——图的遍历之深度优先搜索、广度优先搜索(28)
总而言之,深度搜索我们可以理解为栈操作,广度搜索我们可以理解为队列操作。原创 2022-11-20 22:49:48 · 728 阅读 · 1 评论 -
算法与数据结构【30天】集训营——图的定义和基本术语超全详解案例(27)
图G由顶点集V和边集E组成,记为G=(V,E),其中V(G)表示图G中顶点的有限非空集;E(G)表示图G中顶点之间的关系(边)的集合。易错点线性表可以是空表,树可以是空树,图不可以是空图,图可以没有边,但是至少要有一个顶点。原创 2022-11-19 22:40:59 · 879 阅读 · 6 评论 -
算法与数据结构【30天】集训营——外部排序的原理及代码详解及排序课后习题解析(26)
举一个简单的例子:我现在有1TB的数据,但是我的内存只有8GB,请问我应该如何处理这个数据,我们的思想很快就会想到分而治之。首先将这一个TB的数据划分为不同的文件块,然后每个文件块最好是小于等于我们的内存,然后读取之后,可以用内部排序算法进行排序。依次将这些文件块里面的数据排序,然后依次读取出每个文件块的最小元素,按照两两比较的思想,然后输出最小的,就这样,一直合并到两个顺串完,如果一个顺串先完,剩下另一个顺串,那么就将剩下的顺串直接拷贝到硬盘上。按照这个方法,把合并后的顺串继续合并,直到最终合并成原创 2022-10-27 21:04:05 · 932 阅读 · 1 评论 -
算法与数据结构【30天】集训营——归并排序、基数排序的原理及代码详解(25)
(4)基数排序使用条件有严格的要求:需要知道各级关键字的主次关系和各级关键字的取值范围。, 且不需要附加存储空间,但递归实现时仍需要开辟相应的递归工作栈。(3) 时间复杂度可以突破基于关键字比较一类方法的下界。乐观的生活会有幸运之神降临!, 达到 O(n)。原创 2022-10-23 18:40:33 · 681 阅读 · 1 评论 -
算法与数据结构【30天】集训营——简单选择排序、树形选择排序、堆排序的原理及代码详解(24)
在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数中再找最小(或者最大)的与第2个位置的数交换,以此类推,直到 第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。原创 2022-10-23 17:11:46 · 663 阅读 · 2 评论 -
算法与数据结构【30天】集训营——冒泡排序、快速排序的原理及代码详解(23)
所以在比较第二趟的时候,原创 2022-10-23 16:14:44 · 616 阅读 · 1 评论 -
算法与数据结构【30天】集训营——初学者能听懂的动画:希尔排序的原理及代码详解(22)
然后这个时候,表的长度最大是4,4/2等于2,所以要在原来的四组里面进行组合,把元素变成两组,如何组合就是在原来的4个组里面分别选取每个组里面的首元素作为组合元素。原创 2022-10-23 15:05:57 · 710 阅读 · 2 评论 -
算法与数据结构【30天】集训营——直接插入排序、折半插入排序的原理及代码详解(21)
排序 :就是一系列数据,按照某个关键字(例如:销量,价格),进行递增或者递减的顺序排列起来。原创 2022-10-23 14:31:56 · 726 阅读 · 1 评论 -
算法与数据结构【30天】集训营——详解查找章节数据结构(C语言版 第2版)课后习题答案 (20)
5)设哈希表的地址范围为 0~ 17 ,哈希函数为: H ( key ) =key%16。用线性探测法处理冲突,输入关键字序列: ( 10 , 24 , 32, 17 , 31 , 30, 46 , 47 , 40, 63 , 49),构造哈希表,试回答下列问题:①画出哈希表的示意图;②若查找关键字 63 ,需要依次与哪些关键字进行比较?③若查找关键字 60 ,需要依次与哪些关键字比较?④假定每个关键字的查找概率相等,求查找成功时的平均查找长度。原创 2022-10-22 23:43:09 · 901 阅读 · 5 评论 -
算法与数据结构【30天】集训营——散列表的数字分析法、平方取中法、除留余数法、开发地址法、链地址法(19)
中间四位是HLR识别号,表示用户号的归属地;在元素的存储位置和其关键字之间建立某种直接关系,那么在进行查找时,就无需做比较或做很少次的比较,按照这种关系直接由关键字找到相应的记录。越大,表中已填入的记录越多,再填记录时,发生冲突的可能性就越大,则查找时,给定值需与之进行比较的关键字的个数也就越多。这个方法计算很简单,假设关键字是1234,那么它的平方就是1522756,再抽取中间的3位就227,用做散列地址。根据前辈们的经验,若散列表的表长为m,通常p为小于表长的最大质数或不包含小于20质因子的合数。原创 2022-10-22 22:14:14 · 720 阅读 · 1 评论 -
算法与数据结构【30天】集训营——B+树的概念及其特点、有趣的文章(18)
B+树的节点只存储索引key值,具体信息的地址存在于叶子节点的地址中。因此,B+树成为了数据库比较优秀的数据构,MySQL中MyIsAM和InnoDB都是采用的B+树结构。B树在提高了IO性能的同时并没有解决元素遍历的我效率低下的问题,正是为了解决这个问题,B+树应用而生。B树在提高了IO性能的同时并没有解决元素遍历的我效率低下的问题,正是为了解决这个问题,B+树应用而生。而且在数据库中基于范围的查询是非常频繁的,而B树不支持这样的操作或者说效率太低。B+树的内部结点并没有指向关键字具体信息的指针。原创 2022-10-20 22:14:35 · 639 阅读 · 2 评论 -
算法与数据结构【30天】集训营——B树的创建、查找、插入、删除总结的最佳解决方法(17)
一棵m阶的B树,满足下:(1)树中每个结点至多有m棵子树;(2) 若根结点不是叶子结点,则至少有两棵子树;(3)除根之外的所有非终端结点至少有「m/2]子树;向上取整操作(4) 所有的叶子结点都出现在同一层次上,并且不带信息,通常称为失败结点(失败结点并不存在,指向这些结点的指针为空。引入失败结点是为了便于分析B-树的查找性能);(5)所有的非终端结点最多有m- 1个关键字这里的关键字需要注意理解一下,结点里面可能存在多个关键字。原创 2022-10-20 21:59:50 · 774 阅读 · 4 评论 -
算法与数据结构【30天】集训营——平衡二叉树的LL、RR、LR、RL调整的简单快速方法(16)
如果数据呈有序排列,则二叉排序树是线性的,查找的时间复杂度为O(n);反之,如果二叉排序树的结构合理,则查找速度较快,查找的时间复杂度为O(log2n)O(log_2^n)O(log2n)。事实上,树的高度越小,查找速度越快。因此,希望二叉树的高度尽可能小。它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1。原创 2022-10-20 20:29:04 · 946 阅读 · 2 评论 -
算法与数据结构【30天】集训营——二叉排序树的创建、查找、插入、删除操作(15)
二叉排序树又称二叉查找树,它是一种排序和查找都很有用的特殊二叉树。(1) 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2) 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3) 它的左、 右子树也分别为二叉排序树。原创 2022-10-20 18:33:17 · 656 阅读 · 1 评论 -
算法与数据结构【30天】集训营——线性表的顺序查找、折半(二分)查找、分块查找(14)
面向一些数据量很大的实时系统, 如订票系统、互联网上的信息检索系统等, 查找效率尤其重要。本次我们将针对查找运算,讨论应该采用何种数据结构, 使用什么样的方法, 并通过对它们的效率进行分析来比较各种查找算法在不同情况下的优劣。查找表是由同一类型的数据元素(或记录)构成的集合。关键字是数据元素(或记录) 中某个数据项的值,用它可以标识一个数据元素(或记录)。若此关键字 可以唯一地标识一个记录, 则称此关键字为主关键字(对不同的记录, 其主关键字均不同)。反之,称用以识别若千记录的关键字为次关键字。当数据元素只原创 2022-10-20 17:56:35 · 853 阅读 · 5 评论 -
算法与数据结构【30天】集训营——树和二叉树课后习题详解之数据结构C语言严蔚敏版(13)
题目分析 ] 因为后序遍历栈中保留当前结点的祖先的信息,用一变量保存栈的最高栈顶指针,每当退栈时,栈顶指针高于保存最高栈顶指针的值时,则将该栈倒入辅助栈中,辅助栈始终保存最长路径长度上的结点,直至后序遍历完毕,则辅助栈中内容即为所求。解释:设度为 0 结点(叶子结点)个数为 A,度为 1 的结点个数为 B,度为 2 的结点个数为 C,有A=C+1, A+B+C=1001> ,可得 2C+B=1000 ,,又因为 C 为整数,所以 B=0, C=500 , A=501 ,即有> 501 个叶子结点。原创 2022-10-16 17:46:08 · 497 阅读 · 4 评论 -
算法与数据结构【30天】集训营——二叉树和森林的互转换以及构造哈夫曼树及编码(12)
哈夫曼编码:对一棵具有n个叶子的哈夫曼树,若对树中的每个左分支 赋予0, 右分支赋予1’则从根到每个叶子的路径上,各分支 的赋值分别构成一个二进制串, 该二进制串就称为哈夫曼编码。将第一个二叉树不变,然后将第二个二叉树的跟结点作为第一个二叉树的跟的右孩子,然后将第三棵树的根作为第二个二叉树的跟的右孩子,以此类推即可将所有的二叉树合并为一个二叉树。中序遍历森林:普通的树构成的森林是不存在中序遍历的,这里的中序遍历必然指代的是化成二叉树的森林。从树的二叉链表表示的定义可知,任何一棵和树对应的二叉树,其。原创 2022-10-16 16:23:44 · 567 阅读 · 1 评论 -
算法与数据结构【30天】集训营——树和二叉树的操作以及全部知识点汇总(11)
树是一种非线性的数据结构,它是由n个有限结点组成有层次关系的集合。树具有以下特点,可以根据这些特点来判断一个数据结构是否是树• 每个结点具有0个或多个子结点• 每个子结点只有一个父结点• 没有前驱的结为根结点• 除了根结点外,每个子结点又可以由m棵不相关的子树组成二叉树每个结点至多只有两颗子树(即二叉树中不能存在度大于 2 的结点)二叉树的子树有左右之分,其次序不能任意颠倒即使树中某结点只有一棵子树,也要区分它是左子树还是右子树。原创 2022-10-16 01:26:30 · 561 阅读 · 1 评论 -
算法与数据结构【30天】集训营——数组按行(列)为主序存储题型技巧求解、广义表知识点(10)
该类题目,首先需要明确的是是按照行还是列进行主存放,如果是行进行主存放,那么就是该行之前的元素个数乘以数组中列的元素个数,然后加上该列之前的元素个数之和,然后乘以每个元素所占的单位。这里唯一需要注意的就是,在确定题目中所求的数组的元素之前的个数的时候,我们需要考虑该起点位置在哪里?比如起点是从-1开始到9,LOC【7,4】,-1 0 1 2 3 4 5 6 7 ,这里如果是按照行序主存放,那么该元素之前的个数为:8个起点很重要!原创 2022-10-15 23:14:33 · 695 阅读 · 2 评论 -
算法与数据结构【30天】集训营——串的模式匹配算法KMP、求next[j]、nextval[j] 技巧操作(09)
串(string)(或字符串)是由零个或多个字符组成的有限序列串中字符的数目n称为串的长度。零个字符的串称为空串(null string), 其长度为零。子串在主串中的位置则以子串的第一个字符在主串中的位置来表示。当两个串的长度相等,并且各个对应位置的字符都相等时,才称这两个串相等。原创 2022-10-15 21:51:15 · 617 阅读 · 1 评论 -
算法与数据结构【30天】集训营——栈和队列课后习题详解之C语言严蔚敏版(第二版)(08)
在拼数过程中,若遇非数字字符,表示数已拼完,将数压入栈中,并且将变量 num 恢复为 0,准备下一个数。解释:对于非循环队列,尾指针和头指针的差值便是队列的长度,而对于循环队列, 差值可能为负数, 所以需要将差值加上 MAXSIZE(本题为 n),然后与 MAXSIZE (本题为 n) 求余,即( n+r-f)%n。解释:栈是后进先出的线性表,一个栈的入栈序列是 1, 2, 3,, , n,而输出序列的 第一个元素为 n,说明 1,2,3,, , n 一次性全部进栈, 再进行输出, 所以。原创 2022-10-15 20:57:56 · 521 阅读 · 1 评论 -
算法与数据结构【30天】集训营——栈和队列的全套操作及易错知识点总结(07)
栈 (stack) 是限定仅在表尾进行插入或删除操作的线性表。因此, 对栈来说, 表尾端有其特殊含义, 称为栈顶 (top), 相应地, 表头端称为栈底 (bottom)。不含元素的空表称为空栈。操作结果:构造一个空栈s。初始条件:栈s已存在。操作结果:栈S被销毁。初始条件:栈S已存在。操作结果:将S清为空栈。初始条件:栈S已存在。操作结果:若栈 s 为空栈, 则返回 true, 否则返回 false。初始条件:栈S已存在。操作结果:返回s的元素个数, 即栈的长度。原创 2022-10-15 20:34:14 · 719 阅读 · 1 评论 -
算法与数据结构【30天】集训营——线性表之习题总结与考点分析含数据结构(C语言版 第2版)【严蔚敏 】答案(06)
1 后向插入和前向插入如果当前节点为P.后向插入是指在p节点后插入新节点.前向插入是指在p节点后插入新节点.对于单链表而言,仅仅有后向插入.2 基本规律1) 先保存原链表结构不变,即先改动新节点的前后指针,然后再先远后近.2) 先远后近是指先改动离p节点远的指针,在改动离它近的指针.3 链表操作示意图下图是可行的几种链表插入方法.都是依照上述的基本规律实现的.口诀先连后断是关键,前插前最后,后插后最后。...原创 2022-08-10 22:10:41 · 1079 阅读 · 2 评论 -
算法与数据结构【30天】集训营——线性表之易混淆知识点双链表的结点前插和后插(05)
在双链表的插入操作,我们比较头疼的就是,明明选项看着答案都是比较的完整,但是为啥就是选不正确呢?问题可能出在你的顺序问题上。双向链表的插入其实并不复杂,只是在原有单链表的基础上多了连接一个向前的指针而已。但是需要注意的是操作的顺序很重要,不可以写反了。切记顺序不可以记错 在写代码的时候可以将操作步骤画出来,理清实施步骤的顺序。总而言之就是,后插问题上,首先我们需要画出它的插入操作顺序图,第一步是将S的前驱链接在P之后,然后在P的后驱链接在P原来的后驱的前驱,第三步就是P原来的后驱的前驱等于S,P的后驱等于原创 2022-08-07 10:47:58 · 743 阅读 · 1 评论 -
算法与数据结构【30天】集训营——线性表之链式表的表示与实现及顺表与链表比较(04)
线性表的链式存储又称单链表, 它是指通过一组任意的存储单元来存储线性表中的数据元素。为了建立数据元素之间的线性关系,对每个链表结点,除存放元素自身的信息外, 还需要存放一个指向其后继的指针。//定义单链表结点类型 ElemType data;//数据域 struct LNode * next;/ 指针域 } LNode , * LinkList;增加头结点的单链表① 由于第一个数据结点的位置被存放在头结点的指针域中,因此在链表的第一个位置上的操作和在表的其他位置上的操作一致,无须进行特殊处理。...原创 2022-08-07 01:13:24 · 698 阅读 · 2 评论 -
算法与数据结构【30天】集训营——线性表的定义及特点-顺序表的表示与实现及操作(03)
存在唯一一个称作“第一个”的元素。存在唯一一个称作“最后一个”的元素除最后一个元素外,集合中每一个元素都只有一个直接前趋除最后一个元素外,集合中每一个元素都只有一个直接后继注意1、2条:证明循环的序列不是线性表线性表是n(n>=0)n(n>=0)n(n>=0)个数据元素的有限序列,它是一个最常用,最简单的数据结构。特性:均匀性,有序性(线性序列关系)首先, 按顺序不断取下两个顺序表表头较小的结点存入新的顺序表中。......原创 2022-08-05 23:51:56 · 657 阅读 · 1 评论 -
算法与数据结构【30天】集训营——时间复杂度与空间复杂度(02)
定义一系列有限的步骤(1)有穷性。一个算法必须总是在执行有穷步后结束,且每一步都必须在有穷时间内完成。(2)确定性。对千每种情况下所应执行的操作,在算法中都有确切的规定,不会产生二义性,使算法的执行者或阅读者都能明确其含义及如何执行。(3)== 可行性==。算法中的所有操作都可以通过已经实现的基本操作运算执行有限次来实现。(4) 输入。一个算法有零个或多个输入。当用函数描述算法时,输入往往是通过形参表示的,在它们被调用时,从主调函数获得输入值。(5) 输出。一个算法有一个或多个输出。...原创 2022-08-05 21:10:39 · 732 阅读 · 1 评论 -
算法与数据结构【30天】集训营——概念术语介绍及基础知识准备(01)
数据结构是一种具有一定逻辑关系,在计算机中应用某种存储结构,并且封装了相应操作的数据元素的集合。它包含三方面的内容,逻辑关系、存储关系以及操作。正确的算法的含义是:能够解决实际问题,输入的所有可能的合法的输入都能产生预期的正确的结果;能够在有穷的步骤内执行完程序;能够用最简短的语句最高效的完成任务。数据结构的前期知识,都是偏概念性的,需要我们有一定的了解这样才能对数据结构有一定的认识和体会。数据(data) 是对客观事物的符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。...原创 2022-08-04 22:23:57 · 799 阅读 · 1 评论