#include
#define Max 20
#define True 1
#define False 0
typedef char VertexData;
typedef struct ArcNode
{
int adj;
}ArcNode;
typedef struct
{
VertexData vertex[Max];
ArcNode arcs[Max][Max];
int vexnum,arcnum;
}AdjMatrix;
int LocateVertex(AdjMatrix *G,VertexData v)
{
int j,k;
for(k=0;k
if(G->vertex[k]==v)
{
j=k;
break;
}
return j;
}
int CreateDN(AdjMatrix *G)
{
int i,j,k,weight;
VertexData v1,v2;
printf("请输入图的顶点数和弧数:\n");
scanf("%d %d",&G->vexnum,&G->arcnum);
fflush(stdin);
for(i=0;i
for(j=0;j
G->arcs[i][j].adj=0;
printf("请输入图的顶点:\n");
for(i=0;i
scanf("%c",&G->vertex[i]);
fflush(stdin);
printf("请输入一条弧的两个顶点及一个表示是否相连的数即0或1:\n");
for(k=0;k
{
fflush(stdin);
scanf("%c %c %d",&v1,&v2,&weight);
i=LocateVertex(G,v1);
j=LocateVertex(G,v2);
G->arcs[i][j].adj=weight;
G->arcs[j][i].adj=weight;
}
return 0;
}
int visited[Max];
void DepthFirstSearch(AdjMatrix g,int v0);
void TraverseGraph(AdjMatrix g)
{
int vi;
for(vi=0;vi
for(vi=0;vi
}
void DepthFirstSearch(AdjMatrix g,int v0)
{
int vj;
printf("%c ",g.vertex[v0]);
visited[v0]=True;
for(vj=0;vj
DepthFirstSearch(g,vj);
}
int main()
{
AdjMatrix g;
CreateDN(&g);
TraverseGraph(g);
printf("\n");
return 0;
}
这是我写的,你先看看吧。。。