打印有向图中所有简单回路 下载本文

内容发布更新时间 : 2024/12/27 14:38:11星期一 下面是文章的全部内容请认真阅读。

打印有向图中所有简单回路 一、课题内容和要求

打印有向图中所有简单回路。 二、需求分析 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];