• 2024-11-16构建最小生成树(Prim算法和Kruskal算法)
    其中克鲁斯卡尔算法中判断是否发生自环也可采用DFS和BFS判断,这里采用是并查集#include<iostream>#include<algorithm>#include<vector>usingnamespacestd;#defineINF100000000;classEdge{public:intx1,x2;//边的两个顶点intw;//权Edge(intX1
  • 2024-07-26校园导航图(C语言)
    功能分析主要实现了一个校园导航图的相关功能,具体分析如下:图的数据结构定义:AdjMatrix结构体定义了图的邻接矩阵、地点名称、地点介绍、地点个数和路线个数等信息。功能函数:WriteFileAdjMatrix:将邻接矩阵写入文件。delOldAddress:删除旧地点。delOldPath:删除指定路线。
  • 2024-07-15第一周
    弗洛伊德基本思想弗洛伊德算法作为求最短路径的经典算法,其算法实现相比迪杰斯特拉等算法是非常优雅的,可读性和理解都非常好。基本思想:弗洛伊德算法定义了两个二维矩阵:矩阵D记录顶点间的最小路径例如D[0][3]=10,说明顶点0到3的最短路径为10;矩阵P记录顶点间最小路径中的中
  • 2024-07-06暑假第一周总结
    弗洛伊德基本思想弗洛伊德算法作为求最短路径的经典算法,其算法实现相比迪杰斯特拉等算法是非常优雅的,可读性和理解都非常好。基本思想:弗洛伊德算法定义了两个二维矩阵:矩阵D记录顶点间的最小路径例如D[0][3]=10,说明顶点0到3的最短路径为10;矩阵P记录顶点间最小路径中的中转点
  • 2024-07-037.1日报
    今天是小学期的第一天,也是数据结构小学期的第一天,今天老师说明了第一阶段的任务,五人成组,每个组员四道题,共20道题,我的四道题是最短路径(迪杰斯特拉算法)、希尔排序的实现、先序和中序构造二叉树 、矩阵运算,今天完成了第一道题最短路径(迪杰斯特拉算法),以下是题目要求试实现迪杰斯特
  • 2024-07-03暑假第一天
    今天下午下学期,我完成了普利姆算法的编写,以下是我的源代码#include<iostream>#defineMVNum10#defineMaxInt32767usingnamespacestd;structedge{charadjvex;intlowcost;}closedge[MVNum];typedefstruct{charvexs[MVNum];intarcs[MVNum][MVNum
  • 2024-05-31离散数学求图的回路和通路(基于邻接表,递归算法)
    网上大多是二维矩阵和循环算法,本篇则是基于邻接表的递归算法求图的回路和通路。代码如下:#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>#defineok1#defineerror0#definemax255typedefcharelemtype;intcnt[5]=
  • 2024-04-05数据结构 第六章(图)【下】
    写在前面:本系列笔记主要以《数据结构(C语言版)》为参考(本章部分图片来源于王道),结合下方视频教程对数据结构的相关知识点进行梳理。所有代码块使用的都是C语言,如有错误欢迎指出。视频链接:第01周a--前言_哔哩哔哩_bilibili四、图的应用1、最小生成树(1)在一个连通网的所有生成树
  • 2023-12-1212.11 迪杰斯特拉方法实现最短路径(c++)
     今天通过自主学习,,对数据结构中的迪杰斯特拉方法实现最短路径进行了深造,让我学会了很多新的东西。首先是问题描述:用迪杰斯特拉算法实现有向网的最短路径输入格式:第一行输入有向网的顶点和边数,第二行输入各顶点值,用空格间隔,第三行开始输入各条边的两个点的及边上的权值,用空
  • 2023-11-28邻接矩阵存储创建有向图
    #include<iostream>usingnamespacestd;//邻接矩阵需要顶点表,二维矩阵,还有点数边数#defineMVNum100typedefstruct{charvexs[MVNum]; //顶点表intarcs[MVNum][MVNum]; //矩阵intvexnum,arcnum; //顶点数、边数}AMGraph;intLocateVex(AMGraphG,charv){//
  • 2023-11-1420231114打卡
    今天学习了数据结构练习了最小生成树算法kruskal和最短路径dijkstra和floyd算法#defineMAX10000000#include<iostream>usingnamespacestd;structGraph{ int**arc; char*vex; intvexnum; intarcnum;};structEdge{ intstart,end,weight;};Edge*cre
  • 2023-11-10邻接表与邻接矩阵的转换
    //邻接表--->邻接矩阵voidConvert(GraphG,&intA[n][n]){  for(inti=0;i<n;i++){    for(p=G.vexnum[i].firstarc;p;p=p->nextarc){      A[i][p->adjvex]=1;    }  }} //邻接矩阵--->邻接表voidConvert(intA[n][n],Graph&G){  Ar
  • 2023-11-0211-2打卡
    今天学习了prim算法最小生成树#include<iostream>#defineMAX1000000usingnamespacestd;structgraph{ char*vex; intvexnum; int**arc;};structEdge{ charvex; intweight;};//若edge[i]为0则代表已加入u集合(最小生成树集合)Edge*initedge(graph*g,
  • 2023-06-29prim算法
    #include<stdio.h>#defineN20#defineTRUE1#defineINF32766#defineINFIN32767typedefstruct{ intvexnum,arcnum; charvexs[N]; intarcs[N][N];}MGraph;voidcreateMGraph_w(MGraph*g);voidprim(MGraph*g,intu);//创建带权无向图的邻接矩阵void
  • 2023-06-266-2 最短路径(迪杰斯特拉算法)
    试实现迪杰斯特拉最短路径算法。函数接口定义: voidShortestPath_DIJ(AMGraphG,intv0); 其中 G 是基于邻接矩阵存储表示的有向图, v0表示源点裁判测试程序样例: #include<iostream>usingnamespacestd;#defineMaxInt32767#defineMVNum100typedefchar
  • 2023-06-267-3 修建道路
    N个村庄,从1到N编号,现在请您兴建一些路使得任何两个村庄彼此连通。我们称村庄A和B是连通的,当且仅当在A和B之间存在一条路,或者存在一个存在C,使得A和C之间有一条路,并且C和B是连通的。已知在一些村庄之间已经有了一些路,您的工作是再兴建一些路,使得所有的村庄都是连通的,并且兴建的路的
  • 2023-06-266-1 最小生成树(普里姆算法)
    试实现普里姆最小生成树算法。函数接口定义: voidPrim(AMGraphG,charu); 其中 G 是基于邻接矩阵存储表示的无向图,u表示起点裁判测试程序样例: #include<iostream>#defineMVNum10#defineMaxInt32767usingnamespacestd;structedge{charadjvex;
  • 2023-06-23邻接矩阵表示法
    邻接矩阵表示法使用邻接矩阵创建无向图需要一个顶点表和邻接矩阵邻接矩阵的存储结构采用邻接矩阵建立无向网输入总顶点数和总边数。输入点的信息存入顶点表中。初始化化为邻接矩阵,使每个权值初始化为极大值。构造邻接矩阵算法实现在图中查找顶点代码实现#inclu
  • 2023-06-216-3 最短路径(弗洛伊德算法)
    #include<iostream>usingnamespacestd;#defineMaxInt32767#defineMVNum100typedefcharVerTexType;typedefintArcType;intPath[MVNum][MVNum];//标志两个结点之间是否可达intD[MVNum][MVNum];//存储两个结点间的边的权重typedefstruct{VerTexT
  • 2023-06-206-1 最小生成树(普里姆算法)
    试实现普里姆最小生成树算法。一、函数接口定义:voidPrim(AMGraphG,charu);其中G是基于邻接矩阵存储表示的无向图,u表示起点二、裁判测试程序样例:#include<iostream>#defineMVNum10#defineMaxInt32767usingnamespacestd;structedge{charadjvex;
  • 2023-06-186月18日
    6-1最小生成树(普里姆算法) 试实现普里姆最小生成树算法。函数接口定义: voidPrim(AMGraphG,charu); 其中 G 是基于邻接矩阵存储表示的无向图,u表示起点voidPrim(AMGraphG,charv){intdistance[G.vexnum];intparent[G.vexnum];
  • 2023-06-06图的邻接矩阵
    #include<stdio.h>#include<stdlib.h>#defineN20#defineTRUE1#defineFALSE0//访问标志数组intvisited[N];//采用数组定义的队列,用于广度搜索typedefstruct{ intdata[N]; intfront,rear;}SqQueue;//图的邻接矩阵表示typedefstruct{ intvexnum,ar
  • 2023-04-17zxscs
    //zjscs.cpp--minimumcostspanningtree#include<limits.h>#include<stdio.h>#include<stdlib.h>#include"myconst.h"#defineMAX_VERTEX_NUM20#defineINFINITYINT_MAXtypedefintVRType;typedefintVertexType;typedefs
  • 2023-04-17GraphDepth
    //GraphDepth.cpp--page1577.1(b)//Depth_FirstSearch#include<stdio.h>#include<stdlib.h>#include"ghl1.h"#defineMAX_VERTEX_NUM20typedefintVRType;typedefintVertexType;typedefstructArcCell{VRTypeadj;}ArcCe
  • 2023-02-05创建图的存储结构
    引入由于图的任意两个顶点之间都存在关系,自然无法采用诸如顺序存储结构这种适合一对一,物理地址连续的存储法,但可以采取邻接矩阵或邻接表作为图的存储结构。邻接矩