数据结构无向图操作课程设计实验报告.docVIP

数据结构无向图操作课程设计实验报告.doc

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构无向图操作课程设计实验报告

数 据 结 构 课 程 设 计 设计题目: 无向图的操作 学生姓名: 专业班级: 指导教师: 完成时间: 课题名称 无向图的操作 院 系 年级专业 学 号 姓 名 成 绩 课题设计 目的与 设计意义 1、课题设计目的:一、熟悉图的两种常用的存储结构,邻接矩阵 二、建立有向图,用邻接表存储结构存储。 在邻接表存储结构上实现深度优先遍历 目 录 第一章 课程设计的目的与意义 1 第二章 课程设计的内容与要求 1 2.1课程设计的内容 1 2.1.1定义 1 2.1.2操作 2 2.2课程设计的要求 2 第三章 需求分析 2 3.1原理 2 3.2要求 3 3.3系统总框架 3 3.4运行环境 3 3.5程序的输入(包含输入的数据格式和说明) 4 3.6开发工具 4 第四章 算法与描述 4 4.1图的深度优先遍历 4 4.2具体过程应为 4 第五章 源程序 5 第六章 运行结果 12 第七章 结束语 17 第八章 参考文献 18 第一章 课程设计的目的与意义 图是一种复杂的非线性结构。在人工智能、工程、数学、物理、化学、计算机科学等领域中,图结构有着广泛的应用。 在线性结构中,结点之间的关系是线性关系,除开始结点和终端结点外,每个结点只有一个直接前趋和直接后继。在树形结构中,结点之间的关系实质上是层次关系,除根结点之外,每个结点都只能有一个双亲(前趋),但每个结点可以有零个或多个孩子(后继)。因此,层次关系是非线性的。但是,它在树的结点之间建立了一个层次结构;同层次上的每个结点可以和下一层的零个或多个结点(即孩子)相关,但只能和上一层的一个结点(即双亲)相关(根节点除外)。然而在土结构中,对结点(图中常称为顶点)的前趋和后继个数都是不加限制的,即结点之间的关系是任意的。图中任意两个结点之间都可能相关。 邻接表(Adjaceny List)是图的一种顺序存储与链式存储结合的存储方法,类似于树的孩子链表表示法。由于它只考虑非零元素,因而节省了零元素所占的存储空间。它对于无向图和有向图都适用。通过实习巩固并提高的C语言知识,并初步了解Visual C++的知识,提高编程能力与专业水平。 3.4运行环境 (1)硬件:计算机486/64M以上 操作系统: WIN9x 以上/WIN2000/WIN XP/WIN ME 相关软件:vistualC++ 程序的输入包含输入的数据格式和说明 (1)输入顶点数,及各顶点信息(数据格式为整形) 输入边数,及权值(数据格式为整形) 假设初始状态是图中所有顶点未曾被访问,深度优先遍历可以从图的初始点出发,访问初始点,然后依次从v未被访问的邻接点出发深度优先遍历图,直至图中所有和v有路径相通的顶点都被访问到;若此时仍有顶点未被访问到,则从另一个未被访问的顶点出发,重复上述过程,直至所有点都被访问到为止。这是一个递归的过程。所以在实现深度优先遍历的过程中必须递归调用深度优先搜索函数。而且在深度优先搜索函数中必须设一标志数组以标记结点是否被访问。 具体过程应为先访问初始点Vi,并标志其已被访问。此时定义一指向边结点的指针p,并建立一个while()循环,以指针所指对象不为空为控制条件,当Vi的邻接点未被访问时,递归调用深度优先遍历函数访问之。然后将p指针指向下一个边结图的存储与遍历算法-数据结构样,也是从初始点Vi出发开始访问,访问初始点,标志其已被访问,并将已访问过的初始点序号i入队。当队列非空时进行循环处理,删除队首元素,第一次执行时k的值为i,即front=(front+1)%MaxLength。然后取Vk邻接表的表头指针int k=q[front]; edgenode* p=GL[k]。当边结点指针p不为空时,通过while()循环,并以p是否为空为控制条件,依次搜索Vk的每一个结点。若Vj没有被访问过则进行处理。访问完后,将p指向p-next。其中的while循环部分的代码如下: while(p!=NULL){ //依次搜索Vk的每一个结点 int j=p-adjvex; //Vj为Vk的一个邻接点 if(!visited[j]){ //若Vj没有被访问过则进行处理 coutj ; visited[j]=true; rear=(rear+1)%MaxLength; q[rear]=j; } p=p-next; } 这样就可以访问所有结点,完成图的广度优先遍历。 17 需要对无向图邻接矩阵建立请按0 需要对无向图邻接矩阵输出请按1 需要对

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档