第十二周 项目四(2) 利用遍历思想求解图问题
2015-11-20 08:38
239 查看
/* Copyright(c)2015,烟台大学计算机学院 All rights reserved. 文件名称:test.cpp 作者:杜佳丽 完成日期:2015年11月20日 问题描述:设计一个算法输出图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) { //d表示path中的路径长度,初始为-1 int w,i; ArcNode *p; visited[u]=1; d++; 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 *G,int u,int v) { int i; int path[MAXV]; for (i=0; i<G->n; i++) visited[i]=0; //访问标志数组初始化 FindAPath(G,u,v,path,-1); //d初值为-1,调用时d++,即变成了0 } int main() { ALGraph *G; int A[5][5]= { {0,0,0,0,0}, {0,0,1,0,0}, {0,0,0,1,1}, {0,0,0,0,0}, {1,0,0,1,0}, }; //请画出对应的有向图 ArrayToList(A[0], 5, G); APath(G, 1, 0); APath(G, 4, 1); return 0; }
运行结果:
相关文章推荐
- 第十一周项目1 - 二叉树算法验证(3)
- CentOS SSH命令
- Eclipse快捷键 10个最有用的快捷键
- 第12周 项目4(6)-最短路径
- 第十二周项目1 - 图基本算法库
- Collection、Map、Iterable
- h5 自定义简单的音乐播放器
- STM32F407ZGT6之硬件介绍
- RuPengWang项目
- 第十一周项目1-验证算法(4)哈夫曼编码的算法验证
- 第11周项目2 用二叉树求解代数表达式
- 第九周 项目2-对称矩阵压缩储存的实现与应用
- 第十二周项目1-图基本算法库
- 第十一周项目2 - 用二叉树求解代数表达式
- Mysql 触发器
- 第十一周项目1-验证算法(3)中序线索化二叉树的算法验证
- 第11周项目1 验证算法(3)中序线索化二叉树的算法验证
- 第十二周 项目四(1) 利用遍历思想求解图问题
- 发表文章
- Lumia525升级Win10 Mobile 10586.11上手试玩截图