#include <stdio.h>
#include <malloc.h>
# define n 8 //顶点数
# define e 9 //边数
# define TRUE 1
typedef struct
{char vexs[n]; //顶点数组
int arcs[n][n]; //权值矩阵
}graph;
int visited[n]; //定义布尔常量数组
graph ga;
void DFS(i) //图的深度遍历子函数
int i;
{int j;
printf("node:%c\n",ga.vexs); //输出遍历的顶点
visited=TRUE;
for(j=0;j<n;j++)
if((ga.arcs[j]==1)&&(!visited[j]))
DFS(j);
}
void print_graph(graph ga) 输出矩阵
{
int i,j;
printf("linjie ju zhen:\n");
printf("vertex\t ");
for(i=0;i<n;i++)
printf("%c",ga.vexs);//shuchudingdian
printf("\n");
for(i=0;i<n;i++)//shuchu qunazhi juzhen
{
printf("\t%c",ga.vexs);
for(j=0;j<n;j++)
printf("%d",ga.arcs[j]);
printf("\n");
}
}
void main()
{
int i,j,k;
int w;
//clrscr();
printf("please input dingdian xulie:\n"); //输入节点序列
for(i=0;i<n;i++)
ga.vexs=getchar();
for(i=0;i<n;i++)
for(j=0;j<n;j++)
ga.arcs[j]=0; //初始化矩阵为 0
printf("please input hang lie quanzhi:\n");
for(k=0;k<e;k++)
{scanf("%d %d %d",&i,&j,&w);//i 为行,j为列 ,w 为权值
ga.arcs[j]=w;
ga.arcs[j]=w;
}
printf("linjie juzhen wei:\n");
print_graph(ga);
printf("shendu bianli jieguo wei:\n");
printf("please input the number of the point to cover:\n");
scanf("%d",&i); //从第i个节点开始遍历
DFS(i);
}
文章评论(0条评论)
登录后参与讨论