石大 数据结构实验报告4.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《数据结构》实验报告 二级学院: 专 业 : 指导教师: 班级学号: 姓 名 : 计算机学院 实验四 1、题目:图的设计 2、问题描述: 定义邻接矩阵存储结构。 按照建立一个带权有向图的操作需要,编写在邻接矩阵存储结构下,带权有向图基本操作的实现函数(如初始化图、在图中插入一个结点、在图中插入一条边、在图中寻找序号为 v 的结点的第一个邻接结点、在图中寻找序号为 v1 结点的邻接结点 v2 的下一个邻接结点、图的深度优先遍历或图的广度优先遍历等)。 设计一个测试主函数,首先创建一个图(以图9-5 为例),然后打印图的 n个结点信息和 e 条边信息,最后打印出图的深度优先遍历或广度优先遍历的结点信息序列。 3、基本要求: 为统一起见,创建一个以图 9-5 为例的图。 在邻接矩阵存储结构下,带权有向图基本操作的实现函数。 打印图的 n 个结点信息和 e 条边信息,打印出图的深度优先遍历或广度优先遍历的结点信息序列。 提交实验报告。 4、测试数据: 5、算法思想: 结点结构体:存放顶点的顺序表,存放边的邻接矩阵(二维数组),边的条数。初始化函数:令邻接矩阵的元素为 MaxWeight,边的条数置为 0,顺序表初始化。插入结点函数:在图 G 中插入顶点 vertex 即在顺序表表尾插入顶点。 插入边函数:在图 G 中插入边v1, v2,边v1, v2的权为 weight。 删除边函数: 在图 G 中删除边 v1, v2 ,即令对应的邻接矩阵的元素为MaxWeight。 取第一个邻接顶点:在图 G 中寻找序号为 v 的顶点的第一个邻接顶点,就是邻接矩阵的顶点 v 行中从第一个矩阵元素开始的非 0 且非无穷大的顶点,如果这样的邻接顶点存在则返回该邻接顶点的序号,否则返回-1。 取下一个邻接顶点:在图 G 中寻找 v1 顶点的邻接顶点 v2 的下一个邻接顶点, 就是邻接矩阵的顶点 v 行中从第v2+1 个矩阵元素开始的非 0 且非无穷大的顶点, 如果这样的邻接顶点存在则返回该邻接顶点的序号,否则返回-1,这里 v1 和 v2 都是相应顶点的序号。 创建图函数:在图 G 中插入 n 个顶点信息 V 和 e 条边信息 E,包括顶点顺序表初始化,插入顶点,插入边。 连通图的深度优先遍历函数:1)访问顶点v 并标记顶点 v 已访问。2)查找顶点v 的第一个邻接顶点 w。3)若顶点 v 的邻接顶点 w 存在,则继续执行,否则算 法结束。4)若顶点 w 尚未被访问,则深度优先遍历递归访问顶点 w。5)查找顶点 v 的 w 邻接顶点的下一个邻接顶点 w,转到步骤 3)。 非图的深度优先遍历函数:访问标记初始均为 0,以每个顶点为初始顶点进行调用(调用连通图的深度优先遍历函数)。 连通图的广度优先遍历函数:1)访问初始顶点v 并标记顶点 v 为已访问。2)顶点 v 入队列。3)若队列非空,则继续执行,否则算法结束。4)出队列取得队头顶点 u。5)查找顶点 u 的第一个邻接顶点 w。6)若顶点 u 的邻接顶点 w 不存在, 则转到步骤 3),否则循环执行:(a)若顶点 w 尚未被访问,则访问顶点 w 并标记顶点 w 为已访问;(b)顶点 w 入队列;(c)查找顶点 u 的 w 的邻接顶点后的下一个邻接顶点 w,转到步骤 6)。 非图的广度优先遍历函数:访问标记初始均为 0,以每个顶点为初始顶点进行调用(调用连通图的广度优先遍历函数)。 6、模块划分: 定义图的结点结构体。 初始化操作函数。 插入结点操作函数。 插入边操作函数。 删除边操作函数。 取第一个邻接顶点。 取下一个邻接顶点。 图的深度优先遍历函数。 图的广度优先遍历函数。 定义边信息结构体。 创建图函数。 设计主函数进行测试。 7、数据结构: 8、源程序: #include stdio.h #include stdlib.h #include malloc.h typedef char DataType; #define MaxSize 100 #define MaxVertices 10 #define MaxEdges 100 #define MaxWeight 10000 #define MaxQueueSize 100 #include SeqList.h #include SeqCQueue.h typedef struct { SeqList Vertices; /*存放顶点的顺序表*/ int edge[MaxVertices][MaxVertices]; /*存放边的邻接矩阵*/ int numOfEdges; /*边的条数*/ }AdjMWGraph; /*图的结构体定义*/ void Initiate(AdjMWGraph *G, int n) /*初始化*/ { int i,

文档评论(0)

hao187 + 关注
官方认证
文档贡献者

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

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档