邻接矩阵表示图及遍历

来源:百度知道 编辑:UC知道 时间:2024/05/15 17:16:36
修改程序
#include<stdio.h>
#define INT_MAX 1000
#define MaxVerticesNum 10
int visited[MaxVerticesNum]={0};
typedef char VertexType;
typedef int EdgeType;
typedef struct {
VertexType vexs[MaxVerticesNum];/*顶点表*/
EdgeType edges[MaxVerticesNum] [MaxVerticesNum];
int n, e;
}Mgraph;
void CreateMGraph(Mgraph *G){
/*建立无向网络的邻接矩阵表示*/
int i, j, k, w;
scanf("n=%d,e=%d", &G->n, &G->e);
for (i = 0; i < G->n; i++ )
G->vexs[i] = getchar();
for (i = 0; i < G->n; i++ )
for (j = 0; j < G->n; j++ ) G->edges[i][j] = INT_MAX;
for(k = 0; k < G->e; k++) {
scanf("%d,%d,%d", &i, &j, &w);
G-> edges[i][j] = w;
}
}
void DFSM (Mgraph *G, int i){
int j;
printf("visit vertex:%c", G->vexs[i]);
visited[i] = 1; /*标记vi已访问*/

#include<stdio.h>
#define INT_MAX 1000
#define MaxVerticesNum 10
int visited[MaxVerticesNum]={0};
typedef char VertexType;
typedef int EdgeType;
typedef struct {
VertexType vexs[MaxVerticesNum];/*顶点表*/
EdgeType edges[MaxVerticesNum] [MaxVerticesNum];
int n, e;
}Mgraph;
//建立图
void CreateMGraph(Mgraph &G)
{
G.n = 8;
G.e = 9;
for(int i=0;i<G.n;i++)
G.vexs[i] = 'a'+i;

int edges[8][8]={{0,1,1,0,0,0,0,0},
{1,0,0,1,1,0,0,0},
{1,0,0,0,0,1,1,0},
{0,1,0,0,0,0,0,1},
{0,1,0,0,0,0,0,1},
{0,0,1,0,0,0,1,0},
{0,0,1,0,0,1,0,0},
{0,0,0,1,1,0,0,0}};

for(i=0;i<G.n;i++)
for(int j=0;j<G.n;j++)
G.edges[i][j] = edges[i][j];

}
//深度遍历
void DFS(Mgraph G,int v)
{
visited[v] = true;
printf("V%d ",v);
for(int i=0;i<G.n;i++)
if (!visited[i]