【まとめ】隣接マトリクス図の基本動作


#include 
#include 

#define MaxVertexNum 100
typedef int VertexType ;  //         
typedef int EdgeType;      //            
typedef struct  
{
	VertexType vexs[MaxVertexNum];
	EdgeType edges[MaxVertexNum][MaxVertexNum];
    int n,e;
}MGrap;
bool visited[MaxVertexNum];

void createMGrap(MGrap*);
void DFSTraverse(MGrap* );
void DFS(MGrap* , int );


void main()
{
    freopen("input1.txt","r",stdin);//      
     MGrap *G =(MGrap*)malloc(sizeof(MGrap));
    createMGrap(G);
    for (int i=0;in;i++)
    {
	  for(int j=0;jn;j++)
	  {
		  printf("%4d",G->edges[i][j]);
		  
	  }
	  printf("
"); } DFSTraverse(G); } void createMGrap(MGrap* G) { int i,j,k,w=0,p; // printf("
"); scanf("%d,%d",&G->n,&G->e); for ( p=0;pn;p++) { //fflush(stdin); // // printf(" "); scanf("%d",&G->vexs[p]); } // printf("
"); for ( i=0;in;i++) for ( j=0;jn;j++) G->edges[i][j]=0; for ( k=0;ke;k++) { //printf(" (i,j) w
"); scanf("%d,%d,%d",&i,&j,&w); G->edges[i][j]=w; // G->edges[j][i]=w; // printf(" i=%d,j=%d,w=%d
",i,j,w); } } void DFSTraverse(MGrap* G) { int i; for (i=0;in;i++) visited[i]=false; printf(" :
"); for (i=0;in;i++) // , if (!visited[i]) { DFS(G,i); } printf("
"); } void DFS(MGrap* G, int i) { printf("%d->",G->vexs[i]); //fflush(stdout); visited[i]=true; for (int j=0;jn;j++) if (G->edges[i][j]==1&&!visited[j]) DFS(G,j); }

結果
直観図