图的邻接存储结构及其遍历和拓扑排序

图的邻接存储结构及其遍历和拓扑排序

ID:15527469

大小:92.00 KB

页数:7页

时间:2018-08-03

图的邻接存储结构及其遍历和拓扑排序_第1页
图的邻接存储结构及其遍历和拓扑排序_第2页
图的邻接存储结构及其遍历和拓扑排序_第3页
图的邻接存储结构及其遍历和拓扑排序_第4页
图的邻接存储结构及其遍历和拓扑排序_第5页
资源描述:

《图的邻接存储结构及其遍历和拓扑排序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一、需求分析:(1)本程序利用邻接表存入一个图,并将其使用广度和深度遍历,并将其使用拓扑排序输出来。(2)本程序的目的在于了解图的存储结构,以及其遍历的方法和拓扑排序的应用。(3)测试数据请参见测试结果那里。二、概要设计:(1)数据类型:ADTgraphcs{intvex;//结点的号码intnext;//该结点所连接的下一个结点}(2)基本操作:classgraphics{create(inti,intj)初始条件:存在邻接数组操作结果:将结点i和结点j相连接,从而形成邻接表graphics()操作结果:初始化各个数据init()操作结果:做完深度遍历后重新初始化所需要的数据findfre

2、e()操作结果:存在顶点数组,找到未用结点的下标并返回start(inti)操作结果:启用结点,创建邻接数组dfs(inti,intn)初始条件:图已经创建。操作结果:对图进行广度优先遍历bfs(inti,intn)初始条件:图已经创建。操作结果:对图进行深度优先遍历toposort(intn)初始条件:有向图已经建立操作结果:输出拓扑排序的顺序}(3)主函数main(){声明类对象,调用各个函数。}(4)调用关系:类graphicscreate()main()start()toposort()bfs(),dsf()第7页共7页三、详细设计:#includestruc

3、tgraphics{//声明所需的私有数据intvex[50];//用于存入顶点的号码intnext[50];//用于存入指示字boolvisited[50];//表示该结点是否被访问intfront,rear;//队列的头尾指针intqueue[50];//队列,队列足够大所以不必判断它是否满intin[50];//统计每个结点的入度public://公有函数graphics()//构造函数,用于初始化数据{for(inti=0;i<50;i++){vex[i]=next[i]=-1;//-1代表空,没有使用过in[i]=0;//先初始化为0visited[i]=false;//false

4、表示没有访问过}}voidinit()//做完深度遍历后,重新初始化数据{front=-1;rear=-1;for(inti=0;i<50;i++){visited[i]=false;queue[i]=-1;}}intfindfree()//找到可用的结点{inti=0;while(vex[i]!=-1)i++;returni;}voidstart(inti)//启用结点,创建邻接数组{vex[i]=i;}voidcreate(inti,intj)//构造邻接表第7页共7页{intk=findfree();//找到可用结点vex[k]=j;//记录结点号码intp=i;while(next[

5、p]!=-1)//寻找链尾指针p=next[p];next[p]=k;//存入指示字}voiddfs(inti,intn)//深度优先法遍历{if(!visited[i])//判断有没被访问过cout<

6、问rear++;//入队queue[rear]=i;while(front!=rear){front++;//出队intk=queue[front];intp=next[k];while(p!=-1)//访问所连接的结点{intj=vex[p];if(!visited[j]){cout<

7、指针的功能)for(i=0;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。