积极答复者
这是C的代码,深度优先遍历,不知道该怎么改。哪位高手指点一下?

问题
-
//为什么这个程序运行到输入顶点后就会自动停止呢?
#include<stdio.h>
typedef char VertexType;//邻接矩阵,深度优先遍历
typedef int EdgeType;
#define MAXVEX 100
#define INFINITY 65535
#define TURE 1
#define FALSE 0
typedef int Boolean;
Boolean visited[MAXVEX];typedef struct
{
VertexType vexs[MAXVEX];
EdgeType arc[MAXVEX][MAXVEX];
int numVertexes, numEdges;
}MGraph; //邻接矩阵的方式表示图void CreateMGraph(MGraph G)
{
int i,j,k,w;
printf("输入顶点数和边数:\n");
scanf ("%d,%d",&G.numVertexes ,&G.numEdges);
printf("输入顶点:\n");
for(i=0;i<G.numVertexes ;++i)// scanf("%c",&G.vexs[i]);
for(i=0;i<G.numVertexes ;i++)//初始化邻接矩阵
for(j=0;j<G.numVertexes;j++)
G.arc[i][j]=INFINITY;
for(k=0;k<G.numEdges;k++)//对有关系的边赋值
{
printf("输入边(Vi,Vj)的下标i,j,和权值w:\n");
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;
visited[i]=TURE;
printf("%c",G.vexs[i]);
for(j=0; j<G.numVertexes;j++)
if(G.arc[i][j]!=INFINITY&&!visited[j])
DFS(G, j);
}void DFSTraverse(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);
}void main()
{
MGraph G;
CreateMGraph(G);
DFSTraverse(G);
}
答案
-
I suggest you try as follows in CreateMGraph function:
int i,j,k,w; printf("输入顶点数和边数:\n"); scanf ("%d,%d",&G.numVertexes ,&G.numEdges); printf("输入顶点:\n"); for(i=0;i<G.numVertexes ;++i)// { scanf("%c",&G.vexs[i]); } for(i=0;i<G.numVertexes ;i++)//初始化邻接矩阵 { for(j=0;j<G.numVertexes;j++) { G.arc[i][j]=INFINITY; } }
Please mark this reply as answer if it helps you! Thanks for your cooperation! Good Luck to you.
- 已标记为答案 Helen Zhao 2012年6月1日 8:29
全部回复
-
I suggest you try as follows in CreateMGraph function:
int i,j,k,w; printf("输入顶点数和边数:\n"); scanf ("%d,%d",&G.numVertexes ,&G.numEdges); printf("输入顶点:\n"); for(i=0;i<G.numVertexes ;++i)// { scanf("%c",&G.vexs[i]); } for(i=0;i<G.numVertexes ;i++)//初始化邻接矩阵 { for(j=0;j<G.numVertexes;j++) { G.arc[i][j]=INFINITY; } }
Please mark this reply as answer if it helps you! Thanks for your cooperation! Good Luck to you.
- 已标记为答案 Helen Zhao 2012年6月1日 8:29