- 博客(23)
- 收藏
- 关注
原创 c语言数据结构--------拓扑排序和逆拓扑排序(Kahn算法和DFS算法实现)
/边集加边<1,2>,<1,4>,<2,3>,<2,4>,<3,5>,<4,3>,<4,5>//记录当前图的顶点数量和边数。#define MaxVertexNum 100 //最大顶点数。//使用卡恩算法(Kahn)和深度优先算法(DFS)实现。//连通图和非连通图的深度优先搜索(改进)//顶点集添加1,2,3,4,5。//拓扑排序和逆拓扑排序顶点顺序相反。//度为0的顶点索引入队列。//初始化print数组。//建议用一个变量临时保存原有图。//建议用一个变量临时保存原有图。
2025-04-03 17:56:28
1205
原创 c语言数据结构---------Floyd算法求各顶点间最短路径
/记录当前图的顶点数量和边数。//边集加边<0,1>,<1,0>,<0,2>,<2,0>,<1,2>#define MaxVertexNum 100 //最大顶点数。printf("各顶点间最短路径长度:\n");printf("两个顶点之间的中转点:\n");//弗洛依德算法求各顶点间最短路径(动态规划)//各顶点间最短路径长度。//两个顶点之间的中转点。//顶点集添加0,1,2。//图,邻接矩阵存储。
2025-04-02 19:48:31
359
原创 c语言数据结构--------Dijkstra算法求单源最短路径
/边集加边<1,2>,<1,5>,<2,5>,<5,2>,<2,3>,<5,3>,<5,4>,<3,4>,<4,3>,<4,1>printf("%d的最短路径为%d ,其的前驱结点为%d\n",i+1,dist[i],path[i]);//记录从t到各顶点的最短路径中各顶点的前驱结点。//记录从t到各顶点的最短路径。//记录当前图的顶点数量和边数。//修改path[j]值。//修改dist[j]值。//顶点集添加1,2,3,4,5。//固定j对应的路径。//返回x在顶点表的索引。//图,邻接矩阵存储。
2025-03-30 17:36:08
834
原创 c语言数据结构----------BFS求无权图单源最短路径
printf("A到%c最短路径为%d,%c的父节点为%c\n", 'A' + j, d[j], 'A' + j, path[j] == -1?//边集加边(A,B),(A,C),(A,D),(B,E),(B,D),(C,D),(C,F),(D,E),(D,F),(E,F)//便于遍历,0表示未遍历,1表示已遍历。//最短路径从哪个顶点过来。//表示i到各个结点的最短路径。//顶点集添加A,B,C,D,E,F。//检测v的所有的邻接点。//求顶点i到其它顶点的最短路径。//最后一个节点出队。
2025-03-30 15:17:33
773
原创 c语言数据结构-------最小生成树(Prim和Kruskal算法)
/边集加边(A,B),(A,C),(A,D),(B,E),(B,D),(C,D),(C,F),(D,E),(D,F),(E,F)//时间复杂度|E|log2|E| log2|E|为给每边排序的时间,但本程序手动排序了。printf("第%d条边:%c%c,权重%d\n", ++j,//并查集优化Union操作(小树合并大树)每棵树根节点的绝对值记录的是节点个数。//本程序仅用来模拟过程,输出每一次循环新加入的顶点和边的权值,不再输出一棵树。//顶点集添加A,B,C,D,E,F。
2025-03-29 17:03:21
1297
原创 c语言数据结构---------有向图(邻接表存储)
printf("顶点是否插入成功:%d\n", InsertVertex(&graph, 6));printf("边<2,1>是否存在%d\n", Adjacent(graph, 2, 1));// (由于顶点表是顺序表存储,当删除顶点时,要进行批量移动,为了方便,我们只进行逻辑删除)//列出图G中与结点x邻接的边,返回值为邻接边的数量,e为第一条边的指针。printf("2的5之后的邻接点:%d\n", *e);printf("2的第一个邻接点:%d\n", *e);//该弧所指向顶点的位置。
2025-03-24 21:07:32
871
原创 c语言数据结构---------无向图(邻接表法)
printf("顶点是否插入成功:%d\n", InsertVertex(&graph, 6));printf("边(1,2)是否存在%d\n", Adjacent(graph, 1, 2));//列出图G中与结点x邻接的边,返回值为邻接边的数量,e为第一条边的指针。printf("2的3之后的邻接点:%d\n", *e);printf("2的第一个邻接点:%d\n", *e);//该弧所指向顶点的位置。//若无向边(x,y)不存在,则向图G中添加该边。//若无向边(x,y)存在,则在图G中删除该边。
2025-03-24 19:19:26
765
原创 c语言数据结构----------有向图(邻接矩阵存储)
printf("边是否成功删除:%d\n", DeleteEdge(&graph, 'G', 'B'));printf("边是否成功删除:%d\n", DeleteEdge(&graph, 'G', 'A'));printf("<A,B>有无边:%d\n", Adjacent(graph, 'A', 'B'));printf("<B,A>有无边:%d\n", Adjacent(graph, 'B', 'A'));//边集加边<A,B>,<C,A>,<D,A>,<E,B>,<F,B>,<E,C>,<F,D>
2025-03-23 18:35:17
762
原创 c语言数据结构--------无向图(邻接矩阵存储)
printf("边是否成功删除:%d\n", DeleteEdge(&graph, 'G', 'B'));printf("边是否成功删除:%d\n", DeleteEdge(&graph, 'G', 'A'));printf("边是否成功添加:%d\n", AddEdge(&graph, 'G', 'B'));printf("边是否成功添加:%d\n", AddEdge(&graph, 'G', 'A'));//边集加边(A,B),(A,C),(A,D),(B,E),(B,F),(C,E),(D,F)
2025-03-23 17:05:31
1207
原创 c语言数据结构----------并查集
/并查集的优化Union操作(小树合并大树)每棵树根节点的绝对值记录的是节点个数。//改进Find操作,将从根到元素x路径上的所有元素都变成根的孩子。//并查集的Union操作(将两个不相交的集合合并为一个集合)//并查集的Find操作(找到并返回包含元素x的树的根)//看E的父节点是否是A,是A即改进成功。//临时记录x路径上的元素的索引。//看A和C父节点的数值大小。//找到x的位置,并记录索引。//找到x的位置,并记录索引。//看G的根节点是否为A。//并查集没有x元素。//并查集没有x元素。
2025-03-18 16:57:40
653
原创 c语言数据结构-------线索二叉树(中序为例)
printf("第二层左节点数据:%d\n第二层右节点数据:%d\n", rootNode->left->data, rootNode->right->data);printf("第三层第一个节点右指针数据:%d\n第三层第二个节点右指针数据:%d\n", rootNode->left->right->data,printf("第四层第一个节点左指针数据:%d\n", rootNode->left->right->left->data);//if(node->ltag==0),保证其为结点。
2025-03-17 16:05:19
421
原创 在centos7 环境下部署hadoop
链接: https://pan.baidu.com/s/1yo4cE6JlS6VCD_3R4mteLA 提取码: xbqi。然后将安装包解压到对应文件夹即可,需将4个虚拟机解压到。首先,需要下载镜像文件,镜像文件位置。以hadoop130为例。
2025-03-16 16:43:07
459
原创 c语言数据结构-------二叉树
printf("第二层左节点数据:%d\n第二层右节点数据:%d\n", rootNode->left->data, rootNode->right->data);printf("第三层第一个节点右指针数据:%d\n第三层第二个节点右指针数据:%d\n", rootNode->left->right->data,printf("第四层第一个节点左指针数据:%d\n", rootNode->left->right->left->data);//队头节点出队并赋值给p。
2025-03-15 19:14:23
1067
原创 数据结构c+java--------模式匹配算法
/当不相等,就继续让i的前一个元素和该元素的下一个next值指向的元素比较,直到相等或next指向-1。//当i的前一个元素和i的前一个元素的next值指向的元素相等时,i的next值就是j+1。//当第一个元素就无法 匹配时或者两个元素匹配成功时。//成功,返回模式串在主串中的位置,即索引+1。//当第一个元素无法匹配或能匹配上时。//获取主串和模式串的指针。//朴素模式匹配算法,返回是元素索引+1。//获取next数组。//创建next数组。//kmp算法,next数组手算。//获取next数组。
2025-03-08 17:53:59
1036
原创 SSM框架和SpringBoot框架对比
我们只需要引入起步依赖,其会根据maven的依赖传递功能,为我们引人与起步依赖相关的依赖。比如当让Spring整合mybatis时,SSM框架需要手动配置数据库连接池,需要手动配置事务管理的Bean。由此,我们可清晰地体会到springboot的强大之处。可见,其需要引入的maven坐标是相当多的,而且需要我们手动控制版本。可知,springboot极大地简化了配置类的书写,这是什么原因呢?而且还需要手动配置数据库和java属性的映射关系,可谓是相当繁琐。那么,它的底层逻辑是怎样的呢?
2025-03-04 19:19:11
315
1
原创 c语言数据结构------------链栈
printf("取出栈顶元素:%d\n", hnode->head->data);//给链栈插入数据,必须以第二个元素开始插入,stack不能为空。printf("删除栈顶元素:%d\n", *e);printf("取出栈顶元素:%d\n", *e);printf("取出栈顶元素:%d\n", *e);//程序bug,必须以第二元素插入。//栈链为空或头指针为空,无法删除。//为新增的元素分配存储空间。//给栈链删除元素,e表示删除的数据。//栈链为空,无法取出。//头指针指向首节点。
2025-03-01 23:23:20
831
原创 c语言数据结构-----------动态分配顺序表
/为顺序表增加资源。//代表顺序表长度,不代表索引。//判断插入的索引是否异常。//判断插入的索引是否异常。//i代表索引 插入元素。
2025-02-27 14:06:51
789
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人