数据结构与算法课程设计报告--图遍历的演示.docx
《数据结构与算法课程设计报告--图遍历的演示.docx》由会员分享,可在线阅读,更多相关《数据结构与算法课程设计报告--图遍历的演示.docx(17页珍藏版)》请在第一文库网上搜索。
1、计算机科学导技术系课程设计报告20142015学年第二学期课程数据结构与算法课程设计名称图遍历的演示图遍历的演示一、 问题分析和任务定义很多涉及图上操作的算法都是以图的遍历操作为基础的。试写一个程序,演示在连通的无向图上访问全部结点的操作。以邻接多重表为存储结构,实现连通无向图的深度优先和广度优先遍历。以用户指定的结点为起点,分别输出每种遍历下的结点访问序列和相应生成树的边集。任选国内城市,起点为合肥,暂时忽略里程。设图的结点20-30个,每个结点用一个编号表示(如果一个图有n个结点,则它们的编号分别为1,2,,n)o通过输入图的全部边(存于数据文件中,从文件读写)输入一个图,每个边为一个数对
2、,可以对边的输入顺序作出某种限制。注意,生成树的边是有向边,端点顺序不能颠倒。二、 数据结构的选择和概要设计城市与城市之间的关系无向图采用邻近多重表来实现,主要要表示无向图中的各个结点和边。我们要以邻接多重表为存储结构,实现连通无向图的深度优先和广度优先遍历。以用户指定的结点为起点,分别输出每种遍历下的结点访问序列和生成树的边集,将该结果通过一定形式打印出来。typedefstruct(QENode*rear;QENode*front;1inkQueue;/队列的定义2、函数原型清单队列初始化函数:voidInitQueue(1inkQueue*Q)入队列函数:voidQueueAppend(
3、1inkQueue*Q,intv)出队列函数:voidQueueDe1ete(1inkQueue*Q,int*v)图初始化函数:voidIniti1izedCGraph*graph)图创建函数:voidCreateGraph(Graph*graph)访问标记设置函数:voidSetMark(Graph*graph)深度优先搜索遍历(DFS)函数:voidDFS(Graph*graph,intv)广度优先搜索遍历(BFS)函数:voidBFS(Graph*graph,intu)3、程序流程框架图选择起始点-图T.程序流程框架三、 详细设计和编码程序主体部分主要包括两大部分,一部分是对图的信息的处
4、理,另一部分是关于遍历算法。这其中包含了邻接多重表构造的无向图的初始化深度优先搜索遍历和广度优先搜索遍历算法的应用。我们的题目是关于图遍历的演示,那么涉及到重点就是遍历算法,以下我们来围绕遍历算法进行探讨。1、深度遍历函数名称:voidDFS(Graph*graph,intv)函数参数:Graph*graph为创建的图intV指明当前开始结点。函数功能:实现一张无向图从一个指定结点的深度搜索遍历,并输出结点序号参数。具体代码:voidDFS(Graph*graph,intV)深度遍历(ENode*p;printf(z,%d,v);graph-am1istv.mark=1;p=graph-am1
5、istv.firstedge;whi1e(p!=NU11)if(p-ivex=v)if(graph-am1istp-jvex.mark=0)(printf(zzivex,p-jvex);DFS(graph,p-jvex);p=p-i1ink;)e1seif(graph-am1istp-ivex.mark=O)printf(zznzz,p-jvex,p-ivex);DFS(graph,p-ivex);p=p-j1ink;)2、广度遍历函数名称:voidBFS(Graph*graph,intu)函数参数:Graph*graph为创建的图intU为开始的结点。函数功能:实现一张无向图从一个指定的结点
6、的广度优先搜索遍历,并将输出结点打印出来。具体代码:voidBFS(Graph*graph,intU)广度遍历(1inkQueueQ;ENode*p;InitQueue(&Q);printf(zz%d,u);graph-am1istu.mark=1;QueueAppend(&Q,u);whi1e(Q.front!=Q.rear)(QueueDe1ete(&Q,&u);p=graph-am1istu.firstedge;whi1e(p!=NU11)if(p-ivex=u)if(graph-am1istp-jvex.mark=0)QueueAppend(&Q,p-jvex);graph-am1is
7、tp-jvex.mark=1;printf(zzivex,p-jvex);printf(zz%d/z,p-jvex);)p=p-i1ink;e1se(if(graph-am1istp-ivex.mark=0)QueueAppend(&Q,p-ivex);graph-am1istp-ivex.mark=1;printf(zzjvex,p-ivex);printf(zz%d/z,p-ivex);)p=p-j1ink;)以上就是我们对深度优先搜索遍历算法和广度优先搜索遍历算法的数据算法的讨论,那么本题中核心算法介绍完后,就要讲讲最为基础但必不可少的算法程序了。3、图的初始化函数名称:voidInit
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 算法 课程设计 报告 遍历 演示