第12周项目4 - 利用遍历思想求解图问题(2)
2016-11-17 10:54
232 查看
问题及代码:
运行结果:
知识点总结:
遍历输出简单路径。
心得体会:
理解遍历思想有利于解决问题。
/* * Copyright (c)2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:main.cpp * 作 者:何大冰 * 完成日期:2016年11月17日 * 版 本 号: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) { //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; }
运行结果:
知识点总结:
遍历输出简单路径。
心得体会:
理解遍历思想有利于解决问题。
相关文章推荐
- 第12周上机实践项目4 - 利用遍历思想求解图问题(1-4)
- 第12周项目4-利用遍历思想求解图问题
- 第12周项目4 - 利用遍历思想求解图问题(1)
- 第12周项目4 - 利用遍历思想求解图问题(4)
- 【第12周 项目4 - 利用遍历思想求解图问题(6-7)】
- 第12周项目4 -利用遍历思想求解图问题(1)
- 第12周项目4 - 利用遍历思想求解图问题(5)
- 第12周项目4利用遍历思想求解图问题1
- 第12周项目4 利用遍历思想求解图问题(1--5)
- 第12周项目4 - 利用遍历思想求解图问题(7)
- 第12周项目4利用遍历思想求解图问题2
- 【第12周 项目4 - 利用遍历思想求解图问题(1-5)】
- 第12周项目4利用遍历思想求解图问题(6-7)
- 第12周项目4-利用遍历思想求解图问题(3)
- 第12周 项目4 - 利用遍历思想求解图问题 (6-7)
- 第12周、项目4 ㈠—利用遍历思想求解图问题
- 第12周、项目4 ㈡—利用遍历思想求解图问题
- 【第12周 项目4 - 利用遍历思想求解图问题(1-5)】
- 第12周项目4 利用遍历思想求解图问题
- 第12周项目4利用遍历思想求解图问题5