#include<stdio.h>
#include<stdlib.h>
#dene MaxVertexNum 10
int visited[MaxVertexNum];
int visitde[MaxVertexNum];
typedef struct edgenode
{
int adjvex;
struct edgenode *next;
}edgenode;
typedef struct vexnode//头结点
{
int data;
edgenode *link;
}vexnode;
typedef struct
{
vexnode vertex[MaxVertexNum];
int vexnum,arcnum;
}AdjList;
void creat_wxdjlist(AdjList *G)
{
edgenode *s;
int i,j,k;
printf("请输入图的节点数和边数:");
scanf("%d,%d",&(G->vexnum),&(G->arcnum));
printf("请输入图结点:");
for(i=0;i<G->vexnum;i++)
{
getchar();
scanf("%d",&(G->vertex[i].data));
G->vertex[i].link=NULL;
visited[i]=0;
visitde[i]=0;
}
printf("请输入每条边对应的两个顶点的序号(输入格式为;i,j):");
for(k=0;k<G->arcnum;k++)
{
getchar();
printf("请输入第%d 条边的顶点序号:",k+1);
scanf("%d,%d",&i,&j);
s=(edgenode *)malloc(sizeof(edgenode));
s->adjvex=j-1;
s->next=G->vertex[i-1].link;
G->vertex[i-1].link=s;
}
}
void Dfsjb_visit(AdjList G,int i)
{
edgenode *p;
if(visited[i]==0)
{
printf("V%d",G.vertex[i].data);
}
visited[i]=1;
p=G.vertex[i].link;
while(p!=NULL)
{
if(visited[p->adjvex]==0)
Dfsjb_visit(G,p->adjvex);
p=p->next;