




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验报告课程:数据结构(c语言) 实验名称:图的建立、基本操作以及遍历系别:数字媒体技术 实验日期: 12月13号 12月20号专业班级:媒体161 组别:无 姓名: 学号:实验报告内容验证性实验一、 预习准备:实验目的:1、熟练掌握图的结构特性,熟悉图的各种存储结构的特点及适用范围;2、熟练掌握几种常见图的遍历方法及遍历算法;实验环境:Widows操作系统、VC6.0实验原理:1. 定义: 基本定义和术语 图(Graph)图G是由两个集合V(G)和E(G)组成的,记为G=(V,E),其中:V(G)是顶点(Vertex)的非空有限集E(G)是边(Edge)的有限集合,边是顶点的无序对(即:无方向的,(v0,v2))或有序对(即:有方向的,)。邻接矩阵表示顶点间相联关系的矩阵设G=(V,E) 是有n1 个顶点的图,G 的邻接矩阵A 是具有以下性质的n 阶方阵 特点:无向图的邻接矩阵对称,可压缩存储;有n个顶点的无向图需存储空间为n(n+1)/2有向图邻接矩阵不一定对称;有n个顶点的有向图需存储空间为n无向图中顶点Vi的度TD(Vi)是邻接矩阵A中第i行元素之和有向图中,顶点Vi的出度是A中第i行元素之和顶点Vi的入度是A中第i列元素之和邻接表实现:为图中每个顶点建立一个单链表,第i个单链表中的结点表示依附于顶点Vi的边(有向图中指以Vi为尾的弧)特点:无向图中顶点Vi的度为第i个单链表中的结点数有向图中顶点Vi的出度为第i个单链表中的结点个数顶点Vi的入度为整个单链表中邻接点域值是i的结点个数逆邻接表:有向图中对每个结点建立以Vi为头的弧的单链表。图的遍历从图中某个顶点出发访遍图中其余顶点,并且使图中的每个顶点仅被访问一次过程.。遍历图的过程实质上是通过边或弧对每个顶点查找其邻接点的过程,其耗费的时间取决于所采用的存储结构。图的遍历有两条路径:深度优先搜索和广度优先搜索。当用邻接矩阵作图的存储结构时,查找每个顶点的邻接点所需要时间为O(n2),n为图中顶点数;而当以邻接表作图的存储结构时,找邻接点所需时间为O(e),e为无向图中边的数或有向图中弧的数。实验内容和要求:选用任一种图的存储结构,建立如下图所示的带权有向图:4050C 10DB3020AE 要求:1、建立边的条数为零的图; 2、依次将图的边以及相应的权值插入,建立如上图所示的图,并将结点集合和权值集合输出; 3、对所建立的图进行深度优先搜索或广度优先搜索,输出图的遍历序列;算法思想: 首先,选定所使用的图的存储结构(邻接矩阵存储或邻接表存储),建立图的结构体定义。根据所选用的结构建立边条数为零的图,依次插入图的结点和图的各有向边以及权值weight;再次,将图的结点集合以及权值集合输出,以验证所建立图的正确性;最后,调用图的遍历函数,实现图的深度优先遍历或广度优先遍历,并输出遍历序列。二、 实验过程: 程序流程图:实验中的关键语句:void DepthFirstSearch(AdjList *adjlist) int i; int *visited; visited=(int*)malloc(sizeof(int)*adjlist-vexnum); for(i=0;ivexnum;i+) visitedi = 0; printf(n深度优先搜索:n); for(i=0;ivexnum;i+) if(visitedi = 1) continue; VisitNext(adjlist,i,visited); printf(n); void BreadthFirstSearch(AdjList *adjlist) ArcNode *temp = NULL; int nth; VexQueue *vexqueue = NULL; int i; int *visited = NULL; visited=(int*)malloc(sizeof(int)*adjlist-vexnum); for(i=0;ivexnum;i+) visitedi = 0; printf(n广度优先搜索:n); for(i=0;ivexnum;i+) if(visitedi = 1) continue; vexqueue = CreateQueue(); Push(vexqueue,i); while(!IsEmpty(vexqueue) Pop(vexqueue,&nth); if(visitednth = 1) continue; visit(adjlist,nth,&visited); temp=adjlist-vertexnth.head; while(temp) Push(vexqueue,temp-adjvex-1); temp = temp-next; printf(nn); 编写及调试程序中遇到的问题及解决方法:(1)没有注意到可以验证多次问题。解决:用循环队列(2)程序没错但不能运行。解决:开始时需要初始化栈和队列三、 实验总结: 1. 实验结果及分析:用邻接矩阵法储存图,能编写深度优先搜索遍历,广度优先搜索遍历 的算法等。在编写完成调试的过程中,我发现了许多错误,及时对算法进行了优化修改,并掌握的调试,分析错误的一些小技巧。 2. 实验总结:通过本次实验我对图的基本操作有了更深的了解,基本上掌握了图的深度优先遍历和广度优先遍历。 同时,通过自己数次的调试、修改也搞懂了许多以前比较模糊的知识点,比如这次的界面是复制过来的,其中很多语句经过同学的讲解都理解了。 3. 思考题:1、采用邻接表存储的图的深度优先遍历算法类似于二叉树的哪种遍历?
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年网络安全技术专家认证考试试题及答案
- 2025年网络安全工程师资格认证考试试题及答案
- 2025年甘肃省平凉市灵台县考核招聘乡村小学全科型教师和农村订单定向医学生考试备考题库及答案解析
- 2025广西贵港市港南区东津镇中心卫生院招聘3人笔试模拟试题及答案解析
- 2025年西宁市城北区教育局面向社会公开招聘编外聘用人员笔试参考题库附答案解析
- 2025年合肥肥西县桃花镇延乔路小学代课教师招聘5人笔试模拟试题及答案解析
- 2025浙江嘉兴市海盐县教育局下属公办幼儿园招聘劳动合同制教职工(教师、卫生保健员)17人笔试参考题库附答案解析
- 2025首都医科大学附属北京朝阳医院石景山医院第一次招聘应届毕业生33人笔试模拟试题及答案解析
- 2025广东佛山市南海区丹灶镇教育发展中心招聘初中临时聘用专任教师4人(丹灶镇初级中学专场)笔试备考试题及答案解析
- 2025年家用缝纫机项目建议书
- 汉教课堂观察汇报
- 2025年四川省高考化学试卷真题(含答案解析)
- 2025年注册会计师考试财务成本管理试题及答案解析
- 《人工智能通识课基础》高职人工智能全套教学课件
- 供应链管理师三级实操考试题库及答案
- 鳃裂囊肿及瘘管的护理
- 2024司法考试真题及答案
- 2025年吉林省中考语文试卷真题(含答案)
- 2025年北京市JINGHUA学校高考英语适应性试卷(5月份)
- 护理查房小儿发热
- 永辉超市收银培训
评论
0/150
提交评论