#include<stdio.h>
typedef char VertexType ;
typedef int EdgeType ;
typedef int Boolean ;
#define TRUE 1
#define FALSE 0
#define MAXVEX 100
#define INFINITY 65535
typedef struct{
VertexType vexs[MAXVEX] ;
EdgeType arc[MAXVEX][MAXVEX] ;
int numVertexes , numEdges ;
}MGraph ;
Boolean visited[MAXVEX] ;
//函数声明
void CreateGraph( MGraph *G );
void DFS( MGraph G , int i );
void DFSTraversal( MGraph G );
//主函数
int main(){
MGraph G ;
CreateGraph( &G ) ;
printf("DFS遍历\n") ;
DFSTraversal( G ) ;
return 0 ;
}
//函数operation
void CreateGraph( MGraph *G ){
int i,j,k,w ;
printf("无向图\n输入顶点数,边数:") ;
scanf("%d,%d",&G->numVertexes,&G->numEdges) ;
for( j = 0 ; j<G->numVertexes ; j++ ){
scanf("%c",&G->vexs[j]) ;
}
for( i = 0 ; i<G->numVertexes ; i++ ){
for( j = 0 ; j < G->numVertexes ; j++){
G->arc[i][j] = INFINITY ;
}
}
printf("输入(vi,vj)及权值w\n") ;
for( k = 0 ; k<G->numEdges ; k++ ){
scanf("%d %d %d",&i,&j,&w) ;
G->arc[i][j] = w ;
G->arc[j][i] = G->arc[i][j] ;
}
}
void DFS( MGraph G , int i ){
int j = 0;
visited[i] = TRUE ;
printf("%c ", G.vexs[i] ) ;
for( j = 0 ; j < G.numVertexes ; j++ ){
if( G.arc[i][j] != INFINITY && !visited[j])
DFS( G , j ) ;
}
}
void DFSTraversal( MGraph G ){
int i ;
for( i = 0; i<G.numVertexes ; i++ ){
visited[i] = FALSE ;
}
for( i = 0; i<G.numVertexes ; i++ ){
if( !visited[i] ){
DFS(G,i) ;
}
}
}
主要就是scanf("%c",&G->vexs[j]) ;这一步读不了数据 不知道为什么???
改成%s就可以读了,但是%c理论上也成立,我想知道为什么不行?