收藏 分享(赏)

有向图的路径问题.doc

上传人:weiwoduzun 文档编号:1792493 上传时间:2018-08-23 格式:DOC 页数:7 大小:51.50KB
下载 相关 举报
有向图的路径问题.doc_第1页
第1页 / 共7页
有向图的路径问题.doc_第2页
第2页 / 共7页
有向图的路径问题.doc_第3页
第3页 / 共7页
有向图的路径问题.doc_第4页
第4页 / 共7页
有向图的路径问题.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、实验五有向图的路径问题1. 问题描述对于有向图 G=(V,E),任意 Vi,Vj V(ViVj) ,判断从顶点 Vi 到顶点 Vj 是否存在路径。2. 基本要求(1 ) 设计图的存储结构(2 ) 设计算法完成问题求解(3 ) 设计存储从 Vi 到 Vj 路径的存储结构(4) 输入:图可以初始化方式获取、从键盘读入或从文件读入3. 存储结构struct ArcNode /定义边表结点int adjvex; /其代表邻接点域,即是结点数组下标ArcNode *next;struct VertexNode /定义顶点表结点T vertex;ArcNode *firstedge;核心函数初始化函数AL

2、Graph:ALGraph(T a,int n,int e)vertexNum=n;arcNum=e;for(int i=0;iij;ArcNode *s;s=new ArcNode;s-adjvex=j; /输入依附的两个顶点的序号s-next=adjlisti.firstedge;adjlisti.firstedge=s; /头插法判断两点是否存在路径int ALGraph:DFS1(int i,int j)int stackMaxSize;int top;int yes;int visited3MaxSize;for(int k=0;kadjvex;/coutnext;/if(!p) t

3、op-; /注意这里的 p 值代表的是顶点表的 firstedge,其始终在,这行代码将使程序陷入是循环,无法得出正确的结果return yes;4. 源程序#include/#includeconst int MaxSize=10;/templatestruct ArcNode /定义边表结点int adjvex; /其代表邻接点域,即是结点数组下标ArcNode *next;templatestruct VertexNode /定义顶点表结点T vertex;ArcNode *firstedge;template class ALGraphpublic:ALGraph(T a,int n,

4、int e);/ALGraph(); /析构函数可以由系统自己调用,如果定义了,没有写出其算,就容易出错,thiscall-void DFSTraverse(int v);void BFSTraverse(int v);void DFS(int v);int DFS1(int i,int j);private:VertexNode adjlistMaxSize; /定义结点数组,存放顶点,注意 vertexNode 后面的不要忘记了, c+模板机制int vertexNum,arcNum;int visitedMaxSize;templateALGraph:ALGraph(T a,int n,

5、int e)vertexNum=n;arcNum=e;for(int i=0;iij;ArcNode *s;s=new ArcNode;s-adjvex=j; /输入依附的两个顶点的序号s-next=adjlisti.firstedge;adjlisti.firstedge=s; /头插法templatevoid ALGraph:DFSTraverse(int v)int j;coutadjvex;if(visitedj=0)DFSTraverse(j);p=p-next;template void ALGraph:BFSTraverse(int v)int visited1MaxSize;i

6、nt qMaxSize; /存放的是邻接点域int front,rear;for(int i=0;iadjvex;if(visited1j=0)coutnext;template void ALGraph:DFS(int v) /深度优先非递归算法int i,visited2MaxSize,sMaxSize,top=-1;ArcNode *p;for(i=0;i=-1)v=stop;top-;p=adjlistv.firstedge;while(p!=NULLif(p=NULL)top-;elsev=p-adjvex;coutint ALGraph:DFS1(int i,int j)int s

7、tackMaxSize;int top;int yes;int visited3MaxSize;for(int k=0;kadjvex;/coutnext;/if(!p) top-; /注意这里的 p 值代表的是顶点表的 firstedge,其始终在,这行代码将使程序陷入是循环,无法得出正确的结果return yes;void main()int a5=1,2,3,4,5;ALGraph A(a,5,7); /此数据类型不能为 charcoutmn;cout“yes=“A.DFS1(m,n)endl;if(A.DFS1(m,n)cout“两结点之间存在路径!“endl;else cout“两结点之间不存在路径!“endl;5. 运行截图

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报