
图中找回路 C语言编程 跪求大神帮助 高分悬赏 采纳 追加分数
任务描述:在一张图(有向图、无向图)中找出简单回路功能要求:1。图的输入可以从文件或终端接收。不管以任何形式接受的图,均将其保存到文件,并允许用户对其的修改2。以图形的方...
任务描述:在一张图(有向图、无向图)中找出简单回路
功能要求:
1。图的输入可以从文件或终端接收。不管以任何形式接受的图,均将其保存到文件,并允许用户对其的修改
2。以图形的方式显示输入的图。
3。以顶点序列的形式显示所有找到的简单回路,并把他们保存到文件中 展开
功能要求:
1。图的输入可以从文件或终端接收。不管以任何形式接受的图,均将其保存到文件,并允许用户对其的修改
2。以图形的方式显示输入的图。
3。以顶点序列的形式显示所有找到的简单回路,并把他们保存到文件中 展开
3个回答
展开全部
简单提示:
(1)可以用矩阵表示图
(2)用深入优先(DFS)从任 一顶点v0开始搜索,在搜索过程中标记访问过的顶点和边,如果有某个顶点未访问,且该顶点有一条边与v0相连,即找到一条回路。
伪码差不多是这个样子吧。
int DFS(Graph G,int vj)
{
visited[vj]=TRUE;
for(vj所有邻接点vi)
{
if(visited[vi]=FALSE)
{
if(Edge[vj][vi]==FALSE && vi是初始顶点v0)
{
显示一条回路,退出
}
DFS(G,vi);
Edge[v0][vi]=TRUE;
}
}
}
(1)可以用矩阵表示图
(2)用深入优先(DFS)从任 一顶点v0开始搜索,在搜索过程中标记访问过的顶点和边,如果有某个顶点未访问,且该顶点有一条边与v0相连,即找到一条回路。
伪码差不多是这个样子吧。
int DFS(Graph G,int vj)
{
visited[vj]=TRUE;
for(vj所有邻接点vi)
{
if(visited[vi]=FALSE)
{
if(Edge[vj][vi]==FALSE && vi是初始顶点v0)
{
显示一条回路,退出
}
DFS(G,vi);
Edge[v0][vi]=TRUE;
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询