#include
#include
#define MAX_VERT_NUM 10
typedef char VertexData;
typedef enum{
FG,DN,UDG,UDN
}GraphKind;
typedef struct{
VertexData vexs[MAX_VERT_NUM];
int arcs[MAX_VERT_NUM][MAX_VERT_NUM];
int vexnum,arcnum;
GraphKind kind;
}Adjmatrix;
int locateAdjMatrix(Adjmatrix * g,VertexData v){
int i,j;
j=-1;
for(i = 0 ; i < g->vexnum; i++){
if(g->vexs[i] == v){
j = i;
break;
}
}
return j;
}
void createAdjMtrix(Adjmatrix *g){
printf("0:DG,1.DN,3:UDG,4.UDN\n");
scanf("%d",&g->kind);
printf("定点的数量\n");
scanf("%d",&g->vexnum);
printf("边的数量\n");
scanf("%d",&g->arcnum);
int i,j;
for(i = 0 ; i < g->vexnum ; i++){
for(j = 0 ; j < g->vexnum ; j++)
if(i == j){
g->arcs[i][j] = 0;
}else{
g->arcs[i][j] = INT_MAX;
}
}
for(i = 0 ; i < g->vexnum ; i++){
scanf("%c",&g->vexs[i]);
}
int k;
char c1,c2;
int w;
for(k = 0 ; k < g->arcnum ; k++){
scanf("%c%c%d",&c1,&c2,&w);
i = locateAdjMatrix(g,c1);
j = locateAdjMatrix(g,c2);
if(i != -1 && j != -1){
g->arcs[i][j] = w;
if(g->kind == UDN && g->kind == UDG){
g->arcs[j][i] = w;
}
}
}
}
void dfsAdjmatrix(Adjmatrix * g,VertexData v,int *visited){
int i = locateAdjMatrix(g,v);
printf("%c ",g->vexs[i]);
visited[i] = 1;
int j;
for(j = 0 ; j < g->vexnum ; j++){
if(!visited[j] && g->arcs[i][j] != 0 && g->arcs[i][j] != INT_MAX){
dfsAdjmatrix(g,g->vexs[j],visited);
}
}
}
void efsaAdjmatrix(Adjmatrix * g,VertexData v,int *visited){
int q[MAX_VERT_NUM];
int f=-1;
int r=-1;
int j;
int i = locateAdjMatrix(g,v);
printf("%c ",g->vexs[i]);
q[++r] = i;
while(f!= r){
i = q[++f];
for(j = 0 ; j < g->vexnum ; j++){
if(!visited[j] && g->arcs[i][j] != 0 && g->arcs[i][j] != INT_MAX){
printf("%c ",g->vexs[j]);
visited[j] = 1;
q[++r] = j;
}
}
}
}
//5 5 abcde ab1ac2bc3ae4ed5
int main(){
Adjmatrix g;
createAdjMtrix(&g);
int visited[MAX_VERT_NUM];
int i;
for(i = 0 ; i < g.vexnum ; i++){
visited[i] = 0 ;
}
printf("sheng\n");
dfsAdjmatrix(&g,'a',visited);
printf("\n");
for(i = 0 ; i < g.vexnum ; i++){
visited[i] = 0 ;
}
printf("广\n");
efsaAdjmatrix(&g,'a',visited);
printf("\n");
return 0;
}

为啥遍历出的元素不全 dfsAdjmatrix()方法 efsaAdjmatrix()方法那个地方出错了