网站大量收购闲置独家精品文档,联系QQ:2885784924

2024年图的遍历实验报告.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

试验五图的基本操作

一、试验目的

1、使學生可以巩固所學的有关图的基本知识。

2、纯熟掌握图的存储构造。

3、纯熟掌握图的两种遍历算法。

二、试验内容

[問題描述]

對給定图,实現图的深度优先遍历和广度优先遍历。

[基本规定]

以邻接表為存储构造,实現连通無向图的深度优先和广度优先遍历。以顾客指定的結點為起點,分别输出每种遍历下的結點访問序列。

【测试数据】

由學生根据软件工程的测试技术自已确定。

三、试验前的准备工作

1、掌握图的有关概念。

2、掌握图的逻辑构造和存储构造。

3、掌握图的两种遍历算法的实現。

四、试验汇报规定

1、试验汇报要按照试验汇报格式规范書写。

2、试验上要写出多批测试数据的运行成果。

3、結合运行成果,對程序進行分析。

编程思绪:

深度优先算法:计算机程序的一种编制原理,就是在一种問題出現多种可以实現的措施和技术的時候,应當优先选择哪個更合适的,也是一种普遍的逻辑思想,此种思想在运算的過程中,用到计算机程序的一种递归的思想。

度优先有哪些信誉好的足球投注网站算法:又称广度优先有哪些信誉好的足球投注网站,是最简便的图的有哪些信誉好的足球投注网站算法之一,這一算法也是诸多重要的图的算法的原型。Dijkstra單源最短途径算法和Prim最小生成树算法都采用了和宽度优先有哪些信誉好的足球投注网站类似的思想。其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展開并检查图中的所有节點,以找寻成果。换句话說,它并不考虑成果的也許位址,彻底地有哪些信誉好的足球投注网站整张图,直到找到成果為止。

以临接链表作為存储构造,結合其存储特點和上面两种算法思想,給出两种遍历环节:

(1)既然图中没有确定的開始顶點,那么可從图中任一顶點出发,不妨按编号的次序,先從编号小的顶點開始。

(2)要遍历到图中所有顶點,只需多次调用從某一顶點出发遍历图的算法。因此,下面只考虑從某一顶點出发遍历图的問題。

(3)為了在遍历過程中便于辨别顶點与否已經被访問,设置一种访問標志数组visited[n],n為图中顶點的個数,其初值為0,當被访問過後,其值被置為1。

(4)這就是遍历次序的問題,图的遍历一般有深度优先遍历和广度优先遍历两种方式,這两种遍历次序對無向图和有向图都合用。

1、深度优先遍历???從图中某顶點v出发進行深度优先遍历的基本思想是:

(1)访問顶點v;

(2)從v的未被访問的邻接點中选用一种顶點w,從w出发進行深度优先遍历;

(3)反复上述两步,直至图中所有和v有途径相通的顶點都被访問到。

2、广度优先遍历???從图中某顶點v出发進行广度优先遍历的基本思想是:

(1)访問顶點v;

(2)依次访問v的各個未被访問的邻接點v1,v2,……vk;

(3)分别從v1,v2,……vk出发依次访問它們未被访問的邻接點,并使“先被访問顶點的邻接點”先于“後被访問顶點的邻接點”被访問,直至图中所有与顶點v有途径的顶點都被访問到。广度优先遍历图是以顶點v為起始點,由近至遠,依次访問和v有途径相通并且途径長度為1,2,……的顶點。為了使“先被访問顶點的邻接點”先于“後被访問顶點的邻接點”被访問,需设置队列存储访問的顶點。

代码解析:

#defineMAXVEX100

intvisited[MAXVEX];

intn;

structedgenode{

intadjvex;//临接結點序号

intinfo;//临接結點信息

edgenode*next;

};连接結點的存储类型

structvexnode{

intdata;//結點信息

intNo;

edgenode*link;

};数组結點类型

/*BFS遍历時所需存储类型*/

structqueue{

intfront,rear;

edgenode**base;

};

typedefvexnodeadjlist[MAXVEX];

采用顾客互换模式来创立临接链表:

voidCreatGroup(adjlistg,intn){

inte,s,d;printf(输入結點(n)個数和边(e)個数:);cinne;

for(inti=0;in;i++){//创立結點数组

printf(\n输入第%d個結點信息No=,i);scanf(%d,g[i].data);

g[i].link=NULL;

}

/*建立临接链表,创立的是有向图*/

for(inti=0;ie;i++){

printf(第%d条边=\n\t起點序号,终點序号:,i+1);

cinsd;//表达弧由s指向d

edgenode*p=newedgenode

文档评论(0)

159****9606 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档