马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
/*树的邻接矩阵的存储结构*/
#include <stdio.h>
#include <stdlib.h>
typedef char VertexType;
typedef int EdgeType;
#define MAXVEX 10
#define INF 65535
static int Flag[MAXVEX];
typedef struct MGraph
{
VertexType vex[MAXVEX];
EdgeType arc[MAXVEX][MAXVEX];
int numVertexes;
int numEdges;
}MGraph;
void CreateMGraph(MGraph *G)
{
int i = 0,j = 0,k = 0,w = 0;
printf("请输入顶点数和边数,之间用逗号隔开 :\n");
scanf("%d,%d",&(G->numVertexes),&(G->numEdges));
printf("请输入顶点的值 :\n");
for(i = 0;i < G->numVertexes;i++)
{
scanf("%c",&(G->vex[i]));
}
//邻接矩阵的初始化
for(i = 0;i < G->numVertexes;i++)
{
for(j = 0;j < G->numVertexes;j++)
{
G->arc[i][j] = INF;
}
}
for(i = 0;i < MAXVEX;i++)
{
Flag[i] = 0;
}
for(i = 0,j = 0,k = 0; k < G->numEdges; k++)
{
printf("请输入边(Vi~Vj)的顶点下标i和j,以及权重w:\n");
scanf("%d,%d,%d",&i,&j,&w); //<b>调试的时候,这一行貌似没有执行!!!</b>
G->arc[i][j] = w;
G->arc[j][i] = G->arc[i][j];
}
for(i = 0;i < G->numVertexes;i++)
{
for(j = 0;j < G->numVertexes;j++)
{
printf("%d ",G->arc[i][j]);
}
printf("\n");
}
}
void DepthFirstSearch(MGraph *G,int i)
{
int k = 0;
printf("%c",G->vex[i]);
Flag[i] = 1;
for(k = 0;k < G->numVertexes;k++)
{
if(Flag[k] == 0 && G->arc[i][k] != INF)
{
DepthFirstSearch(G,k);
}
}
}
int main()
{
int k = 0; //设置从邻接矩阵的第几行开始DFS搜索,这里从第1行开始
struct MGraph *G;
CreateMGraph(G);
DepthFirstSearch(G,k);
return 0;
}
|