?? 圖的深度遍歷.cpp
字號:
#include"stdio.h"
#include"stdlib.h"
#define max 10
typedef enum{FALSE,TRUE} boolean;
typedef struct{
char vexs[max];
int edges[max][max];
int n,e;
}mgraph;
boolean visited[max];
void createmgraph(mgraph *g)
{ int i,j,k;
printf("input n and e:");
scanf("%d %d",&g->n,&g->e);
printf("%d\n",g->n);
printf("%d\n",g->e);
for(i=0;i<g->n;i++)
for(j=0;j<g->n;j++)
g->edges[i][j]=0;
for(k=0;k<g->e;k++)
{ printf("input edges:\n");
scanf("%d%d",&i,&j);
g->edges[i][j]=1;
g->edges[j][i]=1;
}
}
void outm(mgraph *g)
{int i,j;
for(i=0;i<g->n;i++)
{
for(j=0;j<g->n;j++)
printf("%3d", g->edges[i][j]);
printf("\n");
}
}
void dfsm(mgraph *g,int i)
{ int j;
printf("%d\n",i);
visited[i]=TRUE;
for(j=0;j<g->n;j++)
if(g->edges[i][j]==1&&!visited[j])
dfsm(g,j);
}
void dfstaverse(mgraph *g)
{ int i;
for(i=0;i<g->n;i++)
visited[i]=FALSE;
for(i=0;i<g->n;i++)
if (!visited[i]) dfsm(g,i);
}
main()
{ mgraph *g1=(mgraph *)malloc(sizeof(mgraph));
createmgraph(g1);
outm(g1);
dfstaverse(g1);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -