数据结构
文章平均质量分 69
偏笔试
卡__卡
hello world
展开
-
广义表基础
广义表的长度深度、表头表尾、存储结构原创 2022-10-16 16:40:39 · 1426 阅读 · 0 评论 -
0数据结构-结构体struct与typedef
定义结构与说明结构变量、在定义结构类型的同时说明结构变量、直接说明结构变量、嵌套的结构、结构变量成员的表示方法、结构数组的定义、指向结构变量的指针、指向结构数组的指针、malloc和free、类型定义符typedef原创 2022-08-22 17:45:01 · 828 阅读 · 0 评论 -
2-1线性表-顺序表
数据结构,线性表,顺序表,优缺点,代码实现,插入,删除,查找,时间复杂度,静态分配,动态分配1.优点(1)随机访问。通过首地址和元素序号可在O(1)内找到指定元素。(2)存储密度高。每个结点只存储数据元素。2.缺点(1)拓展容量不方便(2)逻辑上相邻的元素物理上也相邻,插入、删除操作需要移动大量元素二.顺序表的代码定义(一)静态分配(二)动态分配三.初始化(一)静态分配的实现(二)动态分配的实现另:增加动态数组的长度(初始化和定义同上)...原创 2022-07-04 16:19:25 · 131 阅读 · 0 评论 -
2-2线性表-链表
数据结构,线性表,单链表,双链表,静态链表,查找删除建立,基本操作原创 2022-07-05 21:56:11 · 319 阅读 · 0 评论 -
2-3线性表-顺序表和链表的比较
逻辑结构,存储结构、基本操作的对比,优缺点原创 2022-07-05 22:19:52 · 215 阅读 · 0 评论 -
2-4尾插建立单链表,C语言输出
尾插建立单链表,C语言输出;链表实现直接插入排序原创 2022-09-01 22:56:31 · 700 阅读 · 0 评论 -
3-1栈和队列
栈和队列基础代码,基本操作原创 2022-07-06 22:54:02 · 220 阅读 · 0 评论 -
3-2栈和队列-应用
栈和队列的应用。括号匹配,表达式求值,前缀中缀后缀表达式转化等原创 2022-07-07 22:39:32 · 444 阅读 · 0 评论 -
4串的基本操作与匹配
基本操作、存储结构、模式匹配、KMP算法原创 2021-10-10 18:34:37 · 824 阅读 · 0 评论 -
5-1树与二叉树-二叉树树的存储结构
【二叉树的顺序存储】用一组地址连续的存储单元依次自上而下,自左至右存储完全二叉树上的结点元素,即将完全二叉树上编号为i的结点元素存储在一位数组下标为i-1的分量中1.适于:完全二叉树、满二叉树2.优点:树中结点的序号可以唯一的反应结点之间的逻辑关系,最大可能地节省了存储空间,又能利用数组元素的下标值确定结点在二叉树中的位置,以及结点之间的关系3.缺点:对于一般的二叉树,需要添加一些并不存在的空结点,让其每个结点与完全二叉树上的结点相对照,会造成空间浪费,即使在结点数量较少时也需要申请大量空间#d原创 2021-10-12 17:40:14 · 140 阅读 · 0 评论 -
5-2树与二叉树-二叉树的遍历
【先序遍历(根左右NLR)】typedef struct BiTNode { ElemType data; struct BiTNode* lchild, * rchild;}BiTNode,*BiTree;void PreOrder(BiTree T) {//【递归】 if (T != NULL) { visit(T);//访问根结点 PreOrder(T->lchild);//访问左子树 PreOrder(T->rchild);//访问右子树 }}void原创 2021-10-12 19:06:04 · 133 阅读 · 0 评论 -
5-3树与二叉树-线索二叉树
一.概念引入线索二叉树正是为了加快查找结点前驱和后继的速度,加上线索的二叉树称为线索二叉树(指向结点前驱和后继的指针称为线索)规定:若无左子树,令lchild指向其前驱结点;若无右子树,令rchild指向其后继结点;另外,还需增加两个标志域标识指针域指向左(右)孩子还是指向前驱(后继)线索二叉树的结点结构lchildltagdatartagrchild标志位的含义:ltag=0,表示lchild域指示结点的左孩子ltag=1,表示lchild域指示结点的前驱rtag=0原创 2021-10-13 19:31:56 · 133 阅读 · 0 评论 -
5-4树与二叉树-树的存储结构
1.双亲表示法(顺序存储)这种存储方式采用一组连续空间来存储每个结点,同时在每个结点中增设一个伪指针,指示其双亲结点在数组中的位置优点:可以很快得到每个结点的双亲结点缺点:求结点的孩子时需要遍历整个结构#define Max_TREE_SIZE 100typedef struct {//树的结点定义 ElemType data; int parent;//双亲位置域}PTNode;typedef struct { PTNode nodes[MAX_TREE_SIZE];//双亲表示原创 2021-10-14 15:19:40 · 152 阅读 · 0 评论 -
5-5树与二叉树-二叉排序树
二叉排序树/二叉查找树1.左子树结点的值<根结点值<右子树结点值2.对二叉排序树进行中序遍历可以得到一个递增有序序列3.二叉排序树的查找从根结点开始,沿某个分支逐层向下比较。若二叉排序树非空,先将给定值与根结点比较,若相等,则查找成功T!=NULLkey==T->data若不等,如果小于根结点的关键字,则在根结点的左子树上查找。否则在根结点的右子树上查找if(key<T->data) T=T->lchild;else T=T->rchild;原创 2021-10-14 16:24:40 · 127 阅读 · 0 评论 -
5-6树与二叉树-平衡二叉树
平衡二叉树/平衡树:任意结点的左右子树高度差的绝对值不超过1平衡因子:结点左子树与右子树的高度差,平衡二叉树的平衡因子的值只可能是-1,0,11.平衡二叉树的插入(1)LL型:右旋在结点A的左孩子(L)的左子树(L)上插入了新结点,导致以A为根的树失去平衡找到A,右旋,并满足二次排序树的特性(A是从下至上第一个平衡因子异常(子树不平衡)的结点)(2)RR型:左旋由于在结点A的右孩子(R)的右子树(R)上插入了新结点,导致以A为根的子树失去平衡(3)LR型:左右旋由于在A的左孩子(L原创 2021-10-14 17:38:07 · 172 阅读 · 0 评论 -
5-7树与二叉树-哈夫曼树
一.基本概念1.权(值):有某种限时含义的数值2.结点的带权路径长度:从树的根到该结点的路径长度(边的长度)×该结点权值3.树的带权路径长度(WPL):树中所有节点的带权路径长度之和4.哈夫曼树/最优二叉树:带权路径长度最小的二叉树二.哈夫曼树的构造每次在剩余的和新生成的结点中,选择两个最小的性质:1.哈夫曼树的结点总数为2n-12.哈夫曼树中不存在度为1的结点3.哈夫曼树不唯一,但WPL相同且最优4.每个初始结点都将成为叶结点,且权值越小的结点到根结点的路径长度越大三.哈夫曼编码原创 2021-10-14 18:05:10 · 157 阅读 · 0 评论 -
5-8二叉树(链)的建立与C/C++输出
二叉树(链式存储)的建立与输出,二叉树算法题的输出实现原创 2022-09-02 17:16:28 · 634 阅读 · 0 评论 -
8-1插入排序-直接插入排序
直接插入排序,代码,图解步骤,复杂度原创 2022-07-29 18:50:59 · 291 阅读 · 0 评论 -
8-2插入排序-折半插入排序
折半插入排序,代码,图解步骤,复杂度原创 2022-07-29 18:54:02 · 323 阅读 · 0 评论 -
8-3插入排序-希尔排序/缩小增量排序
希尔排序/缩小增量排序,图解步骤,代码,复杂度,稳定性原创 2022-07-29 19:48:06 · 182 阅读 · 0 评论 -
8-4交换排序-冒泡排序
交换排序-冒泡排序,代码,图解思想,复杂度原创 2022-07-30 17:38:22 · 298 阅读 · 0 评论 -
8-5交换排序-快速排序
交换排序-快速排序、代码、图解思路,算法效率分析原创 2022-07-30 20:55:03 · 1297 阅读 · 0 评论 -
8-6选择排序-简单选择排序
选择排序-简单选择排序、代码实现、图解过程、效率分析原创 2022-07-31 21:00:19 · 149 阅读 · 0 评论 -
8-7选择排序-堆排序
堆排序,大根堆建立,代码,图解过程,效率分析,堆的插入和删除原创 2022-07-31 23:07:06 · 474 阅读 · 0 评论 -
8-8归并排序
归并排序,二路归并,代码实现,图解过程,算法效率分析原创 2022-08-01 16:42:28 · 374 阅读 · 0 评论 -
8-9基数排序
基数排序,实现过程,应用,效率分析原创 2022-08-01 18:47:27 · 154 阅读 · 0 评论 -
8-11二路插入排序
二路归并排序,算法思路,代码,效率分析原创 2022-08-02 16:01:03 · 535 阅读 · 0 评论 -
8-12外部排序
外部排序、多路归并原创 2022-08-02 19:36:18 · 607 阅读 · 0 评论 -
8-13外部排序-败者树
外部排序-败者树,多路平衡归并原创 2022-08-03 22:31:45 · 5914 阅读 · 1 评论 -
8-14外部排序-置换选择排序
外部排序:置换-选择排序,图解过程原创 2022-08-03 23:08:34 · 1797 阅读 · 2 评论 -
8-15外部排序-最佳归并树
外部排序-最佳归并树、图解过程、k叉哈夫曼树原创 2022-08-04 21:04:50 · 1564 阅读 · 0 评论 -
8-16树形选择排序/锦标赛排序
树形选择排序/锦标赛排序,图解过程,效率分析原创 2022-08-04 22:14:42 · 193 阅读 · 0 评论 -
7-1顺序查找(数据结构)
一.基础知识1.查找——线性结构——顺序查找2.查找方式:从头至尾(或从尾至头)依次查找3.查找长度:比较次数eg.找到43需要比较9次4.平均查找长度ASL①等概率(通常情况)②不等概率(见后文)(1)查找成功找到26,查找长度2找到30,查找长度3查找每个是等概率的,即1/8ASL=1×1/8+2×1/8+2×1/8+3×1/8+3×1/8+3×1/8+3×1/8+4×1/8=(1+2×2+3×4+4×1)/8=2.625一个成功结点的查找长度=自身所在层数(2)查找失原创 2021-05-20 23:19:03 · 1958 阅读 · 0 评论 -
7-2查找-折半查找/二分查找
查找过程及代码、判定树及ASL原创 2021-05-21 22:13:48 · 2442 阅读 · 0 评论 -
7-3分块查找(数据结构)
一.基础知识1.查找——线性结构——分块查找/索引顺序查找2.基本思想:将查找表分为若干子块,块内无序,块间有序3.蓝色为块内。绿色的划分通常按照关键词递增(减)排序4.查找时,先找绿色块,再在其中找需要的蓝色5.在索引表中,每个元素含有各块的最大关键字和各块中的第一个元素地址。如:10 [0,1]表示块内最大关键字为10,第一个元素地址为0,第二个元素地址为16.在查找绿色时,可以顺序查找,也可以折半查找(表是有序的),而查找蓝色时采用顺序查找(块内无序)二.查找分析1.顺序查找绿色原创 2021-05-22 11:34:18 · 498 阅读 · 0 评论 -
7-4 查找—B树(数据结构)
一.基础知识1.查找——树形结构——B树/多路平衡查找树2.这是一棵五叉排序树(五个黑点)最多能有4个关键字(蓝色),5个指针/分叉(黑点)因此:关键字=分叉-13.B树的阶:树中结点最大的度(蓝色),图中为4下面用m表示树的阶数4.如果分叉=2,五叉退化为二叉树,没有意义,因此最好让:任何结点都至少有3个分叉,2个关键字。如果整棵树中只有一个元素,根节点无法满足该结论,所以以上结论不包括根节点5.对于4的优化,若关键字总数不变,而每个结点内的关键字很少,会导致树很高,查找效率低。因此要原创 2021-05-22 18:14:16 · 594 阅读 · 0 评论 -
7-5 查找—B+树(数据结构)
一.基础知识1.查找——树形结构——B+树2.蓝色分支节点,绿色叶子节点对于一个m阶B+树(1)每个分支节点最多有m棵子树注:B树为m-1(2)结点的子树个数与关键字个数相等,至少为⌈m/2⌉(3)叶结点中将关键字按大小顺序排列,并且相邻叶结点按大小顺序相互连接(4)分支节点为子树关键字的最大值及指向其子结点的指针(5)B+树也需要“绝对平衡”,即所有子树高度相同二.查找1.要查找的是银色框中的记录,因此必须找到叶子结点2.所有叶结点包含全部关键字及指向相应记录的指针(绿色包含了所原创 2021-05-23 13:27:51 · 254 阅读 · 0 评论 -
7-6散列查找(数据结构)
一.基础知识1.查找——散列结构——散列表/哈希表2.同义词:不同的关键字通过散列函数映射到同一个值,它们为“同义词”3.冲突:该位置已经存放了元素,这就产生了冲突4.解决冲突:拉链法/链地址法将同义词存储在链表中对于同义词各个关键字之间可以乱序(蓝色竖着),但如果进行排序,对链表进行顺序查找时会提高查找效率二.散列查找给出散列函数H(key)=key%13给出关键字{19,14,23,1,68,20,84,27,55,11,10,79}14%13=1,放在1号框,其他同理(1原创 2021-05-24 23:05:03 · 1816 阅读 · 0 评论 -
6-1图-基本概念
一.基础知识顶点集V边集E|E|边的条数|V|顶点个数,也称图的阶可以没有边,但不能没有顶点二.基本概念1.无向图(1)边没有箭头,这些边称为无向边(简称边)(2)每条边贡献两个度,所以|E|条边贡献了2|E|个度,故所有顶点的度之和=2|E|(3)(A,B)表示AB之间的边2.有向图(1)有箭头的边,这些边称为有向边(也称弧)。A→BA叫做弧尾,B叫做弧头(2)每条边贡献了一个出度和一个入度,故|E|条边贡献了|E|个出度,|E|个入度。故所有顶点的入度之和=所有顶点的出度原创 2021-04-25 20:18:22 · 1067 阅读 · 0 评论 -
6-2图-邻接矩阵
邻接矩阵一.基本概念(1)1表示有边,0表示无边(2)先行后列图中红框表示A指向B之间的边(无向图表示AB之间的边)(3.1)无向图B的度=3第2行非0元素个数或:第2列非0元素的个数故:第i个结点的度 = 第i行(或第i列)的非零元素个数(3.2)有向图行表示出度,列表示入度B的出度3(B→A、B→E、B→F)B的入度3B的度6故:第i个结点的出度 = 第i行的非零元素个数第i个结点的入度 = 第i列的非零元素个数第i个结点的度 = 第i行、第i列的非零元素个数之和原创 2021-04-26 11:23:24 · 843 阅读 · 0 评论