📄 aa.c
字号:
#include <stdio.h>
#include <stdlib.h>
#define maxsize 5
int visited[maxsize];
typedef struct arcnode
{ int adjvex;
struct arcnode *next;
}arcnode;
typedef struct Vnode
{ int data;
arcnode *firstarc;
}vnode;
typedef struct graph
{ vnode adjlist[maxsize];
int vexnum,arcnum;
}graph;
int m[maxsize][maxsize];
void creatgraph(graph *g)
{ int i,j,k,n,e;
arcnode *p;
printf("\nInput vexnumber:");
scanf("%d",&n);
printf("Input acrnumber:");
scanf("%d",&e);
g->vexnum=n;
g->arcnum=e;
for(i=0;i<n;i++)
{ g->adjlist[i].data=i+1;
g->adjlist[i].firstarc=NULL;
}
for(k=1;k<=e;k++)
{ printf("Input vex's arc:");
scanf("%d",&i);
printf("Input arc position:");
scanf("%d",&j);
p=(arcnode*)malloc(sizeof(arcnode));
p->adjvex=j-1;
p->next=g->adjlist[i-1].firstarc;
g->adjlist[i-1].firstarc=p;
}
}
void DFS(graph *g,int v)
{ arcnode *w;
visited[v]=1;
printf("%d",g->adjlist[v].data);
w=g->adjlist[v].firstarc;
while(w!=NULL)
{ w=w->next;
if(visited[w->adjvex]==0) DFS(g,w->adjvex);
w=w->next;
}
}
void DFStrave(graph *g)
{ int v;
for(v=0;v<g->vexnum;++v) visited[v]=0;
for(v=0;v<g->vexnum;++v)
if(!visited[v]) DFS(g,v);
}
void main()
{ graph *g;
arcnode *w;
int i,j;
for(i=0;i<maxsize;i++)
for(j=0;j<maxsize;j++) m[i][j]=0;
g=(graph*)malloc(sizeof(graph));
creatgraph(g);
DFStrave(g);
for(i=0;i<10;i++)
{ if(g->adjlist[i].firstarc!=NULL)
{ w=g->adjlist[i].firstarc;
do
{ m[i][w->adjvex]=1;
w=w->next; }while(w!=NULL);
}
}
for(i=0;i<maxsize;i++)
{ printf("\n");
for(j=0;j<maxsize;j++)
printf("%d",m[i][j]);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -