考研数据结构
文章平均质量分 51
主要介绍考研数据结构中树和图的常见算法
啥也不会的研究牲
这个作者很懒,什么都没留下…
展开
-
排序算法合集
排序算法文章目录排序算法一:直接插入排序(一):算法思想(二):代码(三):性能分析二:折半插入排序算法(一):算法思想:(二):代码(三):性能分析三:希尔排序(一):算法思想(二):代码(三):性能分析四:冒泡排序(一):算法思想(二):代码(三):性能分析一:直接插入排序(一):算法思想每一趟将一个待排序的关键字按照其值的大小插入到已经排序好的部分的适当位置,直到所有的待排关键字都被插入到有序序列中为止(二):代码void InsertSort(int A[],int numsize){原创 2022-01-04 12:08:40 · 742 阅读 · 0 评论 -
关键路径算法
关键路径介绍:对于关键路径的详细介绍看王道P234页,对于里面事件最早/最晚发生时间,活动的最早/最晚开始时间的概念要清晰,计算要清晰,能够手动模拟关键路径的计算算法//使用邻接表来创建AOE网int CreatUN_AOE(ALGraph* G){ ArcNode* r[MAX_VERTEX_NUM]; //用作访问标记,用来定位 ArcNode* p; //需要插入的结点 printf("Pleas原创 2022-01-01 19:51:15 · 565 阅读 · 0 评论 -
拓扑排序算法
拓扑排序概述:拓扑排序,是将有向无环图G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)属于E(G),则u在线性序列中出现在v之前解析:构造有向无环图的步骤为以下两步,知道图中不存在入度为0的顶点为止 1、选择一个入读为0的顶点并输出 2、从图中删除此顶点以及所有出边,并将原本与其相连的顶点的入度减一 3、循环执行以上步骤代码//初始化栈操作#define MaxSize 50 //定义栈的深度typedef struct { int da原创 2022-01-01 19:49:12 · 227 阅读 · 0 评论 -
Floyd算法
Floyd算法求两点之间最小距离,详细求解过程看天勤数据结构高分笔记208页/** * 弗洛伊德算法 * @param G * @param Path 用来记录当前两顶点之间最短路径上要通过的中间顶点 * @param A 记录当前已经求得的任意两个顶点之间的最短路径的长度 * */void Floyd(MGraph G,int Path[][MAX_VERTEX_NUM],int A[][MAX_VERTEX_NUM]){ //对A和Path数组进行初始化 fo原创 2022-01-01 19:29:59 · 219 阅读 · 0 评论 -
Dijkstra算法
Dijkstra算法对于Dijkstra算法可以看天勤数据结构高分笔记206页,有对该算法非常详细的解释/** * Dijkstra算法,求一点到其他各顶点的最短路径 * * @param G 用邻接矩阵表示的图 * @param v 开始顶点 * @param dist 表示当前已找到的从v0到每个终点vi的最短路径长度。初态为:若v0到vi右边,则为其权值,否则为INF...不可达 * @param path 保存从v0到vi最短路径上vi的前一个路径,初态:若v0原创 2022-01-01 19:28:36 · 358 阅读 · 0 评论 -
Kruskal算法
Kruskal算法一:思想 克鲁斯卡尔算法的具体思路是:将所有边按照权值的大小进行升序排序,然后从小到大一一判断,条件为:如果这个边不会与之前选择的所有边 组成回路,就可以作为最小生成树的一部分;反之,舍去。直到具有 n 个顶点的连通网筛选出来 n-1 条边为止。筛选出来的边和所有的顶点构成此连通网的最小生成树。 判断是否会产生回路的方法为:在初始状态下给每个顶点赋予不同的标记,对于遍历过程的每条边,其都有两个顶点,判断这两个顶点的标记是否一致,如果一致,说明它们本身就处在一棵树中,如果继续连原创 2022-01-03 18:01:24 · 514 阅读 · 0 评论 -
最小代价生成树
最小代价生成树文章目录最小代价生成树一:Prim算法(一):算法思想(二):算法执行过程(三):代码二:克鲁斯卡尔算法(一);算法思想(二):算法执行过程(三):代码一:Prim算法(一):算法思想从图中任取一顶点,将其作为一颗树,然后从与这棵树相接的边中选取一条最短的边(权值最小的边),并将这条边及其所相连的顶点也并入到这棵树中,此时得到了一颗有两个顶点的树。然后从与这棵树相接的边中选取一条最短的边,并将这条表及其所连顶点并入到当前树中,得到一棵有3个顶点的树。以此类推,直到树中的所有顶点都被并入原创 2022-01-03 18:09:53 · 696 阅读 · 0 评论 -
普利姆算法
普利姆算法一:介绍:(一):原理介绍Prim算法构造最小生成树过程如下图所示: 1、首先从图中任选一个顶点加入树T中,此时最小生成树T中就只含有一个顶点 2、然后选择与当前最小生成树T中顶点集合距离最近的顶点,并将该顶点和相应的边加入最小生成树T中,每次操作树T中的顶点数量和边都加一。 3、执行1,2两步,当图中的所有顶点都并入到T中,T就是最小生成树了。此时T中必有n-1条边(二):算法思路介绍 1、先初始化辅助数组,即从起始点到其他顶点的权值保存到数组中,并标志起始点 2、原创 2022-01-01 19:26:26 · 685 阅读 · 0 评论 -
Huffman
Huffman//哈弗曼树结构typedef struct { int weight; int parent; int left; int right;}HFNode,*HuffmanTree;typedef char** HuffmanCode; //动态二维数组,存储哈夫曼编码/** * 该方法目标是在哈夫曼数组中选取结点的权值最小和第二小的且没有够成树的两个结点 * 首先在数组中选取两个没有构成树的结点(没有父节点),分别为min1,原创 2022-01-01 19:22:36 · 79 阅读 · 0 评论 -
图的相关操作-深度/广度优先遍历(邻接表存储)
深度/广度优先遍历(邻接表表示)文章目录深度/广度优先遍历(邻接表表示)一:邻接表的存储结构二:深度优先遍历(邻接表)三:广度优先遍历(邻接表)四:备注一:邻接表的存储结构typedef struct ArcNode{ int adjvex; //该边指向的顶点的位置 struct ArcNode * next; //指向下一条边的指针}ArcNode;typedef struct{ int data; //顶点数据 str原创 2022-01-03 17:14:08 · 443 阅读 · 0 评论 -
图的相关操作(邻接矩阵表示法)
图的相关操作(邻接矩阵表示法)文章目录图的相关操作(邻接矩阵表示法)@[toc]一:邻接矩阵的结点定义二:创建矩阵的入口函数三:定义顶点v在顶点数组中的位置(下标)四:创建有向图五:创建有向网六:创建无向图七:创建无向网八:获取第n个顶点的值九:对顶点v进行赋值十:将顶点v插入到图中(但是没有插入弧或边)十一:删除顶点v十二:深度优先遍历十三:广度优先遍历图示一:邻接矩阵的结点定义#define MAX_VERTEX_NUM 20 //定义最大顶点数#define VertexType int原创 2022-01-01 19:18:57 · 919 阅读 · 0 评论 -
图的相关操作(邻接表表示法)
图的相关操作(邻接表表示法)文章目录图的相关操作(邻接表表示法)@[toc]一:邻接表的结构:二:构造有向图与无向图的入口函数三:构造有向图四:构造无向图五:获取顶点在数组中的下标六:获取指定结点的第一个相邻顶点的下标值七:获取顶点v相对顶点w的下一个顶点的下标值八:深度优先遍历算法九:广度优先遍历算法一:邻接表的结构:#define MAX_VERTEX_NUM 20 //定义最大顶点的数量#define InfoType int //图中弧或者是边的数据类型typedef enum原创 2022-01-01 19:16:42 · 465 阅读 · 0 评论 -
二叉排序树的相关操作
二叉排序树的相关操作文章目录二叉排序树的相关操作@[toc]一:二叉排序树的构建二:二叉排序树的搜索1、递归查找目标结点,并返回地址2、查找三:插入操作四:遍历五:删除结点六:主函数一:二叉排序树的构建/** * 二叉排序树的构建 * @param T * @param array 数组 * @param numsize 数组长度 * @return */int CreatBSTTree(BSTTree* T,int* array,int numsize){ *T =原创 2021-09-18 17:04:08 · 102 阅读 · 0 评论 -
二叉树的相关操作
二叉树的相关操作文章目录二叉树的相关操作一:二叉树的构造,清空操作二:二叉树的遍历1、递归:2、非递归3、层次遍历三:寻找指定二叉树结点1、递归查找3、非递归查找四:寻找父结点1、递归查找2、非递归查找五:删除指定节点及其左右子树六:指定位置插入结点七:求二叉树第k层的节点数1、递归2、非递归八:深拷贝二叉树九:求二叉树的深度十:计算二叉树的结点数1、递归2、非递归十一:统计二叉树中叶子节点的数量1、递归十二:判断两棵树的结构是否相同十三:求一棵树的镜像树十四:获取某节点所在的层数十五:求两个结点的最低公原创 2021-09-10 16:44:46 · 112 阅读 · 0 评论