int arc_num:图的边数 创建无向图 思路: 输入图的顶点数和边数 将点的信息存入顶点表中 初始化邻接矩阵 构造邻接矩阵,将边的信息存入矩阵中 voidcreate_UDG(AMGraph* G) { //输入图的顶点数和边数 printf("Enter vex num:"); scanf("%d", &G->vex_num); printf("Enter arc num:"); scanf("%d...
ivex是该节点所对应的顶点在vexs中的索引,而next_edge是指向下一个节点的。 2. 创建矩阵 这里介绍提供了两个创建矩阵的方法。一个是用已知数据,另一个则需要用户手动输入数据。 2.1 创建图(用已提供的矩阵) /* * 创建邻接表对应的图(用已提供的数据) */ LGraph* create_example_lgraph() { char c1, ...
1 源程序的展示:#include<stdio.h>#include<stdlib.h>#define MVNum 100 //用于数组中#define Maxint 9999 /*将无穷大的数值设为9999*/ typedef char vertextype;/*建立无向图*/typedef int adjmatrix;typedef struct{ vertextype vexs[MVNum]; adjmatrix arcs[MVNum][MVNum];}mgraph; mgraph *G...
//1.创建无向图,输出邻接表。2、设计一个算法,求不带权无向连通图G中距离顶点v最远的一个顶点(所谓最远就是到达v的路径长度最长) include <stdio.h> include <stdlib.h> include <string.h> define MAXSIZE 100 typedef struct ArcNode { int adjvex; struct ArcNode *nextarc; int info; } ArcNode; ...
在无向图中,UG_IsConnectedGraph()函数中使用到了并查集,代码如下 /*以下为并查集定义*/ int* UnionFind_Init(int n); //创建森林,返回森林首指针 int UnionFind_Find(int* s, int n); //Find查找 void UnionFind_Union(int* s, int a, int b); //Union合并 /*以下为并查集实现*/ int* UnionFin...
用矩阵表示无向图的,设有M个节点,则建立一个MXM矩阵,对每个顶点添加它的邻接点,即每行中对于有标记的列为该行顶点的邻接点。
include<stdlib.h> define MAXV 100 typedef struct ANode { int adjvex;struct ANode *nextarc;}ArcNode;typedef struct VNode { int data;ArcNode *firstarc;}VNode;typedef VNode AdjList[MAXV];typedef struct { AdjList adjlist;int n,e;}ALGraph;void CreatList(int a[MAXV][MAXV],ALGraph ...
输入格式: 第一行为两个数n和m,n表示图中节点的总数,m表示图中边的总数 第二行开始为m条无向边 注意: 1.节点从1开始编号,如果n为3,那么图中节点编号仅为1,2,3;如果n为5,那么图中节点编号仅为1,2,3,4,…
{AdjList vertices;int vexnum,arcnum;//图的顶点数和边数}ALGraph;intLocate(ALGraph G,char e)//获取当前元素在结点数组的下标{for(int i=0;i<G.vexnum;i++){if(G.vertices[i].data==e){returni;}}return-1;}voidCreateGraph(ALGraph*G)//采用邻接表,创建无向图{printf("请输入图有几个结点:\n...
int order; nearnode* pnext; }; struct topnode{ char data[20]; nearnode* phead; }; struct Gra{ topnode top[num]; int topnum; int sidenum; }; void create(Gra* gra){ puts("请输入图的弧数\n"); scanf("%d",&gra->sidenum); ...