数据结构
文章平均质量分 94
light_2025
Looking back, there is no regret !
展开
-
数据结构_排序
排序,就是重新排列表中的元素,使表中的元素满足按关键字有序的过程。为了查找方便,通常希望计算机中的表是按关键字有序的。 算法的稳定性:若待排序表中有两个元素 和 ,其对应的关键字相同即 = ,且在排序前 在 前面,若使用某一排序算法排序后, 仍在 前面,则称这个排序算法是稳定的,否则称这个排序算法是不稳定的。需要注意的是:算法是否具有稳定性并不能衡量一个算法的优劣,它主要是对算法的性质进行描述。如果待排序表中的关键字不允许重复,则排序结果是唯一的,那么选择排序算法时的稳定与否就无原创 2023-05-18 22:06:55 · 1431 阅读 · 2 评论 -
数据结构_查找
目录1. 查找的基本概念2. 顺序查找和折半查找2.1 顺序查找2.1.1 一般线性表的顺序查找2.1.2 有序表的顺序查找2.2 折半查找2.3 分块查找2.4 相关练习3. 树型查找 3.1 二叉排序树3.1.1 二叉排序树的定义3.1.2 二叉排序树的查找3.1.3 二叉排序树的插入3.1.4 二叉排序树的构造3.1.5 二叉排序树的删除3.1.6 二叉排序树的查找效率分析3.2 平衡二叉树3.2.1 平衡二叉树的定义3.2.2 平衡二叉树的插入3.2.3 平衡二叉树的删除3.2.4 平原创 2023-05-18 22:05:30 · 2606 阅读 · 0 评论 -
数据结构_图
此时队列非空,取出队头元素 a,由于 b c 与 a 邻接并且未被访问过,于是依次访问 b c,并将 b c 依次入队,此时队列非空,取出队头元素 b ,依次访问与 b 邻接且未被访问的顶点 d,e,并且将 d e 入队(这里注意:虽然 a 也和 b 相邻接,但是 a 已经被 visit[] 标记访问,故不再重复访问),此时队列非空,取出队头元素 c,依次访问与 c 邻接且未被访问的顶点 f g,并且将 f g入队。为了避免同一顶点被访问多次,在遍历图的过程中,必须记下每个已访问过的顶点,为此可以设一个。原创 2023-05-18 22:03:27 · 451 阅读 · 0 评论 -
数据结构_树与二叉树
在先序序列中,左子序列的第一个结点是左子树的根结点,右子序列的第一个结点是右子树的根结点。根据二叉树的性质,完全二叉树和满二叉树采用顺序存储比较合适,树中结点的序号可以唯一地反映结点之间的逻辑关系,这样既可以最大的节省存储空间,又能利用数组元素的下标值确定结点在二叉树中的位置,以及结点之间的关系。根结点一个,第二层至多有3个结点,第三层至多有3的平方----9个结点,第四层至多3的三次方----27个结点,27+9+3+1=40原创 2023-05-14 20:46:07 · 884 阅读 · 2 评论 -
数据结构_串
利用 malloc() 为每个新产生的串分配一块实际串长所需的存储空间,若分配成功,则返回一个指向起始地址的指针,作为串的基地址,这个串由ch指针来指示;发现 c 与 b 不匹配,前面四个字符 “abca” 是匹配的,最后一个匹配字符 a 对应的部分匹配值为 1 ,4 - 1 = 3;B和C是A的子串,B在A中的位置是7,C在A中的位置是1。时,每当匹配失败,就去找它前一个元素的部分匹配值,这样使用起来是不方便的,因此将 PM 表右移一位,这样哪个元素匹配失败,直接看它自己的部分匹配值即可。原创 2023-05-13 10:56:34 · 366 阅读 · 0 评论 -
数据结构_时间复杂度/空间复杂度
第二级调用,数组参数为flag[2],第三级调用,数组参数为flag[3],第n级调用,数组参数为flag[n],所以最终空间复杂度为1+2+3+4+……该时间复杂度的计算不同于循环多次嵌套的情况,Contract接收到的参数N和M在函数体内部的地位是同等的,N和M的阶数是一样的,不知道两者对结果哪个影响大;外部循环是1 2 4 8 16 32 一直到k>n时离开循环,所以2^n>n时结束,循环次数log以2为底的n的对数,所用二层嵌套的。,它是该算法语句规模n的函数,时间复杂度主要分析T(n)的数量级。原创 2023-04-26 20:11:51 · 455 阅读 · 0 评论 -
数据结构_栈、队列和数组
根据题目中 A[0][0] 和 A[3][3] 的存储地址可以知道 A[3][3] 是220-100+1=121个元素,假设每一行存储 n 个元素,A[3][3] 也就是第121个元素:121=3*n+4 (加4是因为存储在数组中是从下角标0开始的),解得 n=39,也就是说一行存放 39 个元素,A[5][5] 存储的地址就是 39*5+6-1=300。依次进栈,那么进栈顺序是确定的,而且要求计算以元素d开头的序列个数,那么出栈的首个元素一定是d,也就是说a b c d 进栈之后,d会进行出栈操作。原创 2023-05-12 10:28:50 · 846 阅读 · 0 评论 -
数据结构_双链表、循环链表、静态链表
单链表的链接结构如上图所示:因为题目中说c是表头元素,c的地址为1008H,c的链接地址1000H就等价于c->next,也就是链接到a的地址,依次类推单链表的链接结构如图所示,若此时插入f 元素到a 和 e 之间,则 a f e 三者要保证,a的链接地址一定要指向f 的地址,f 的链接地址一定要指向e 的地址,e 的链接地址并没有规定需要指向什么,在链表中,只有上一个结点的指针指向下一个结点,才能保证上一个结点找到下一个结点。因为如果先执行④,那么p的后继结点就会指向s,而不会指向p的后一个结点;原创 2023-04-30 08:32:27 · 1428 阅读 · 0 评论 -
数据结构_线性表、顺序表、单链表
因为我们不清楚给定元素之前的结点情况,也可以说链表的指针都是指向下一个结点的,因此我们可以通过引入头结点的方法,对整个链表进行遍历,那么整个链表的内容就会一览无余。从一个空表(头指针为NULL时)开始,生成新结点,并且将读取到的数据存放到新结点的数据域中,将新结点插入到当前链表的表头(头结点之后)。不管带不带头结点,头指针始终指向链表的第一个结点,而头结点是带有头结点的链表中的第一个结点,结点内通常不存储信息。的情况,那么在第i个位置上插入需要找到第 i-1 个结点,将新结点插在其后。原创 2023-04-27 17:19:19 · 1143 阅读 · 0 评论