打印有向图中所有简单回路 一、课题内容和要求
打印有向图中所有简单回路。 二、需求分析 1.图的存储 2.图的遍历
3.有向图中回路的判断 3.打印出结果
三、概要设计
1.运用邻接矩阵保存有向图。 2.定义put 函数输出结果。 3.定义visit函数遍历有向图
处理流程:
选定图中某一节点,进行深度遍历,当搜索到当前接点等于启始节点时,输出结果。
四、详细设计 1.有向图的存储
使用邻接矩阵作为有向图的存储结构: 定义存在目标有向图,如下:
用邻接矩阵实现为: int road[7][7]={ 0,1,0,0,0,0,0, 0,0,1,1,0,0,0, 1,0,0,0,0,0,0, 1,0,1,0,0,0,0, 0,0,0,0,0,1,1,
0,1,0,0,0,0,0, 0,0,0,1,0,1,0};
2.Put函数的定义 void put()//输出 { for(inti=0;i<=min;i++) printf(\ printf(\}
3.Visit函数的定义
void visit(inti,int k)//确定第i个位 { for(int j=0;j<=max;j++) { }
}
if(use[j]==1)//判断j这个数是否被用过 continue; if(road[k][j]==0)//判断是否有这路 continue; use[j]=1;
temproad[i]=j; if(j==end) { min=i; for(int k=0;k<=min;k++) minroad[k]=temproad[k]; put(); } else visit(i+1,j); use[j]=0;
templength-=road[k][j];