//创建邻接矩阵 void create_MG(MGraph *MG) { int i,j,k; int v1,v2,type; char c1,c2; printf("Please input graph type DG(0) or UDG(1):"); scanf("%d",&type); if(type==0) { MG->type=DG; } else if(type==1) { MG->type=UDG; } else { printf("Please input correct gr...
2 邻接矩阵法 用一维数组表示图的顶点,用二维数组表示边的关系 2.1 数据结构 #defineMAX_VEXS_SIZE (100)#defineMAX_VALUE (65535)#pragmapack(1)typedefstruct_M_GRAPH{intVectorNum;intEadgeNum;intVector[MAX_VEXS_SIZE];intEadge[MAX_VEXS_SIZE][MAX_VEXS_SIZE]; }M_GRAPH;#pragmapack()voidPrintM...
VertexType vexs[MAXVEX]; /* 顶点表 */ EdgeType arc[MAXVEX][MAXVEX];/* 邻接矩阵,可看作边表 */ int numNodes, numEdges; /* 图中当前的顶点数和边数 */ }MGraph; /* 建立无向网图的邻接矩阵表示 */ void CreateMGraph(MGraph *G) { int i,j,k,w; printf("输入顶点数和边数:\n"); ...
// 采用数组(邻接矩阵)表示法,构造无向网G。 int i, j, k, w; char v1, v2; printf("G.vexnum :"); scanf("%d", &G.vexnum); printf("G.arcnum :"); scanf("%d", &G.arcnum); getchar(); //加上此句getchar()!! for (i = 0; i<G.vexnum; i++) { printf("G.vexs[%d] :...
邻接矩阵的英文名是 adjacency matrix。它的形式是 bool adj[n][n],这里面n是节点个数,adj[i][j]表示i和j之间是否有边。 如果边有权值,也可以直接用 int adj[n][n] ,直接把边权存进去。 它的优点是可以在O(1)时间内得到一条边是否存在,缺点是需要占用O(n^2)的空间。对于一个稀疏的图(边相对于点...
所以,我将分两次来完成图的代码。这一次,我会完成图的五种存储结构的创建(邻接矩阵存储,邻接表存储,十字链表存储,邻接多重表存储,边集数组存储),两种遍历方式(深度优先遍历,广度优先遍历)。与树结构一样,图结构的遍历也需要借助队列来协助实现。 1 #include<stdio.h>...
/* 程序1:邻接表的dfs,bfs 其中n是点的个数,m是边的个数,你需要输入m条有向边,如果要无向只需要反过来多加一遍即可。*/#include <stdio.h>#include <string.h>#define MAXM 100000#define MAXN 10000int next[MAXM],first[MAXN],en[MAXM],n,m,flag[MAXN],pd,dl[MAXN],hea...
//创建邻接矩阵 voidCreate(Graph *G) { inti,j,k,weight;//i,j,k分别为迭代数,weight是权值 charstart,end;//边或者弧的起始顶点 printf("输入各个顶点的信息:\n");//输入各个顶点的信息 for(i=0;i<G->VertexNum;i++) { getchar(); ...
工具/原料 c-free 方法/步骤 1 程序运行效果 2 主函数(分段函数的创建)3 变量的声明以及创建 4 图的深度遍历输出函数 5 创建图的函数 6 图的广度遍历 7 这是代码下载地址链接:https://pan.baidu.com/s/1Yqq8Ba7HBZaniMPrdYrRyA提取码:iyed 注意事项 关注可以知道更多这方面的代码 ...
1、邻接表表示的图中分别用DFS和BFS遍历 include <cstdio> include <cstring> include <queue> using namespace std;/// // Description: 图的邻接表的结点 struct Edge { int dest; // 目标结点下标 // int value; // 路径长度 Edge *link; ...