图的遍历问题程序.docx

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
HUNAN UNIVERSITY数据结构实验报告题 目: 图的遍历问题学生姓名 梁天 学生学号201408010318专业班级 计科1403 指导老师夏艳 日 期2016.05.14背景网络蜘蛛即Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页,从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来。这样看来,网络蜘蛛就是一个爬行程序,一个抓取网页的程序。在抓取网页的时候,网络蜘蛛一般有两种策略:广度优先和深度优先(如下面这张简单化的网页连接模型图所示,其中A为起点也就是蜘蛛索引的起点)。深度优先顾名思义就是让网络蜘蛛尽量的在抓取网页时往网页更深层次的挖掘进去讲究的是深度!也泛指: 网络蜘蛛将会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接! 则访问的节点顺序为== A -- B -- E -- H -- I -- C -- D -- F -- K -- L -- G。深度爬行的优点是:网络蜘蛛程序在设计的时候相对比较容易些;缺点是每次爬行一层总要向蜘蛛老家 数据库访问一下。问问老总有必要还要爬下一层吗! 爬一层问一次.... 如果一个蜘蛛不管3721不断往下爬很可能迷路更有可能爬到国外的网站去,不仅增加了系统数据的复杂度更是增加的服务器的负担。广度优先在这里的定义就是层爬行,即一层一层的爬行,按照层的分布与布局去索引处理与抓取网页。则访问的节点顺序为== A -- B -- C -- D -- E -- F -- G -- H -- I-- K -- L。广度爬行的优点是对数据抓取更容易控制些,对服务器的负栽相应也明显减轻了许多。问题描述若用有向网表示网页的链接网络,其中顶点表示某个网页,有向弧表示网页之间的链接关系。试设计一个网络蜘蛛系统,分别以广度优先和深度优先的策略抓取网页。基本要求((1)首先输入顶点的数量,然后是各顶点对应的字母,再输入各条弧(权值都置为1)。(2)输出从首个顶点开始的广度优先遍历序列和深度先遍历序列。测试用例输入输入顶点数和弧数:8 9 输入8个顶点. 输入顶点0:a 输入顶点1:b 输入顶点2:c 输入顶点3:d 输入顶点4:e 输入顶点5:f 输入顶点6:g 输入顶点7:h 输入9条弧. 输入弧0:a b 1 输入弧1:b d 1 输入弧2:b e 1 输入弧3:d h 1 输入弧4:e h 1 输入弧5:a c 1 输入弧6:c f 1 输入弧7:c g 1 输入弧8:f g 1 输出广度优先遍历: a b d h e c f g (写反了 )深度优先遍历: a b c d e f g h实验提示(1)设图的顶点大于1个,不超过30个,每个顶点用一个编号表示(如果一个图有n个顶点,则它们的编号分别为0, 1, 2, 3, …, n-1)。(2)此题为求有向图的遍历问题,采用邻接表存储图,实现图的基本操作,并编写DFS和BFS程序。选做内容使用邻接矩阵存储图,编写DFS和BFS程序。课后题目求图的最大连通子图。一、需求分析1.首先输入顶点的数量,然后是各顶点对应的字母,再输入各条弧(权值都置为1);输出从首个顶点开始的广度优先遍历序列和深度先遍历序列;2.为了达到任意图的遍历(结点名称不一定是数字,可以是任意可见字符),可以自定义一个字符数组类型,保存该结点的名字;3.图使用相邻矩阵来实现;4.测试数据:输入输入顶点数和弧数:8 9 输入8个顶点. 输入顶点0:a 输入顶点1:b 输入顶点2:c 输入顶点3:d 输入顶点4:e 输入顶点5:f 输入顶点6:g 输入顶点7:h 输入9条弧. 输入弧0:a b 1 输入弧1:b d 1 输入弧2:b e 1 输入弧3:d h 1 输入弧4:e h 1 输入弧5:a c 1 输入弧6:c f 1 输入弧7:c g 1 输入弧8:f g 1 输出广度优先遍历: a b c d e f g h (这才是正确的结果)深度优先遍历: a b d h e c f g二、概要设计抽象数据类型class Queue//循环顺序队列,为广度优先遍历设计;图类基本操作:Graph(int numVert)bool prior(struct patient x,struct patient y);//图的构造函数void init (int n)//初始化矩阵int n(){

文档评论(0)

502992 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档