问题及代码:
main.cpp:
/*
* 烟台大学计算机与控制工程学院
*文件名称:mian.cpp
*作 者:刘磊
*完成日期:2015年11月30日
*版 本 号:v1.0
*
*问题描述: 假设图G采用邻接表存储,设计一个算法输出图G中从
顶点u到v的一条简单路径(假设图G中从顶点u到v至少
有一条简单路径)。
*
*输入描述:
*程序输出:
*/
#include <stdio.h>
#include <malloc.h>
#include "graph.h"
int visited[MAXV]; //定义存放节点的访问标志的全局数组
void FindAPath(ALGraph *G,int u,int v,int path[],int d)
{
int w,i;
ArcNode *p;
visited[u]=1;
d++; //d表示path中的路径长度,初始为-1
path[d]=u; //路径长度d增1,顶点u加入到路径中
if (u==v)
{
printf("一条简单路径为:");
for (i=0; i<=d; i++)
printf("%d ",path[i]);
printf("\n");
return; //找到一条路径后返回
}
p=G->adjlist[u].firstarc; //p指向顶点u的第一个相邻点
while (p!=NULL)
{
w=p->adjvex; //相邻点的编号为w
if (visited[w]==0)
FindAPath(G,w,v,path,d);
p=p->nextarc; //p指向顶点u的下一个相邻点
}
}
void APath(ALGraph *