|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
- }
复制代码
|
|