下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1页共2页《数据结构与关系数据库(本科)》实验报告姓名班级学号实验日期课程名称数据结构与关系数据库(本科)指导教师成绩实验名称:深度优先遍历以邻接表存储的图实验目的1、掌握以邻接表存储的图的深度优先遍历算法;实验环境硬件环境:微机软件环境:WindowsXP,VC6.0三、实验内容、步骤及结果1、实验内容:基于图的深度优先遍历编写一个算法,判别以邻接表方式存储的有向图中是否存在由顶点vi到顶点vj的路径(i≠j)。2、代码:#include<stdio.h>#include<stdlib.h>#defineMaxVertexNum100/*最大顶点数为100*/typedefcharVertexType;typedefstructnode{/*边表结点*/ intadjvex;/*邻接点域*/ structnode*next;/*指向下一个邻接点的指针域*/ /*若要表示边上信息,则应增加一个数据域info*/}EdgeNode;typedefstructvnode{/*顶点表结点*/ VertexTypevertex;/*顶点域*/ EdgeNode*firstedge;/*边表头指针*/}VertexNode;typedefVertexNodeAdjList[MaxVertexNum];/*AdjList是邻接表类型*/typedefstruct{ AdjListadjlist;/*邻接表*/ intn,e;/*顶点数和边数*/}ALGraph;/*ALGraph是以邻接表方式存储的图类型*/boolvisited[MaxVertexNum];voidCreateTestALGraph(ALGraph*G){/*建立有向图的邻接表存储*/ inti,j; EdgeNode*s; G->n=8;G->e=9; for(i=0;i<G->n;i++)/*建立有n个顶点的顶点表*/ { G->adjlist[i].vertex='1'+i;//转换为字符型 G->adjlist[i].firstedge=NULL;/*顶点的边表头指针设为空*/ } { i=0,j=1; s=(EdgeNode*)malloc(sizeof(EdgeNode));/*生成新边表结点s*/ s->adjvex=j;/*邻接点序号为j*/ s->next=G->adjlist[i].firstedge;/*将新边表结点s插入到顶点Vi的边表头部*/ G->adjlist[i].firstedge=s; i=0,j=2; s=(EdgeNode*)malloc(sizeof(EdgeNode));//*生成新边表结点s s->adjvex=j;//*邻接点序号为j s->next=G->adjlist[i].firstedge;///*将新边表结点s插入到顶点Vi的边表头部 G->adjlist[i].firstedge=s; i=1,j=3; s=(EdgeNode*)malloc(sizeof(EdgeNode));//*生成新边表结点s s->adjvex=j;//*邻接点序号为j s->next=G->adjlist[i].firstedge;//*将新边表结点s插入到顶点Vi的边表头部 G->adjlist[i].firstedge=s; i=1,j=4; s=(EdgeNode*)malloc(sizeof(EdgeNode));//*生成新边表结点s s->adjvex=j;//*邻接点序号为j s->next=G->adjlist[i].firstedge;//*将新边表结点s插入到顶点Vi的边表头部 G->adjlist[i].firstedge=s; i=2,j=0; s=(EdgeNode*)malloc(sizeof(EdgeNode));//*生成新边表结点s s->adjvex=j;//*邻接点序号为j s->next=G->adjlist[i].firstedge;//*将新边表结点s插入到顶点Vi的边表头部 G->adjlist[i].firstedge=s; i=2,j=6; s=(EdgeNode*)malloc(sizeof(EdgeNode));//*生成新边表结点s s->adjvex=j;//*邻接点序号为j s->next=G->adjlist[i].firstedge;//*将新边表结点s插入到顶点Vi的边表头部 G->adjlist[i].firstedge=s; i=3,j=4; s=(EdgeNode*)malloc(sizeof(EdgeNode));//*生成新边表结点s s->adjvex=j;//*邻接点序号为j s->next=G->adjlist[i].firstedge;//*将新边表结点s插入到顶点Vi的边表头部 G->adjlist[i].firstedge=s; i=4,j=3; s=(EdgeNode*)malloc(sizeof(EdgeNode));//*生成新边表结点s s->adjvex=j;//*邻接点序号为j s->next=G->adjlist[i].firstedge;//*将新边表结点s插入到顶点Vi的边表头部 G->adjlist[i].firstedge=s; }///*CreateALGraph}voidDFSTraverseAL(ALGraph*G){/*深度优先遍历以邻接表存储的图G*/ inti; for(i=0;i<G->n;i++) visited[i]=false;/*标志向量初始化*/ for(i=0;i<G->n;i++) if(!visited[i])DFSAL(G,i);/*vi未访问过,从vi开始DFS搜索*/}/*DFSTraveseAL*///intlevel=1;//递归进行的层数intexist_path_DFS(ALGraph*G,inti,intj)//深度优先判断有向图G中顶点i到顶点j是否有路径,是则返回1,否则返回0{EdgeNode*p;intk;if(i==j)return1;//i就是jelse{visited[i]=true;//for(p=G->adjlist[i].firstedge;p;p=p->next,level--) for(p=G->adjlist[i].firstedge;p;p=p->next){ //level++;k=p->adjvex;if(!visited[k]&&exist_path_DFS(G,k,j)) {printf("V%d",k+1); return1;//i下游的顶点到j有路径 } }//for return0;}//else//if(level==1)return0;}//exist_path_DFSvoidmain(){ ALGraph*G; G=(ALGraph*)malloc(sizeof(ALGraph));CreateTestALGraph(G); inti,j;printf("请输入i和j的值格式:i,j\n"); scanf("%d,%d",&i,&j); i=i-1; j=j-1; if(i==j) { printf("i不能等于j\n"); } else { if(exist_path_DFS(G,i,j)) { printf("该路径存在。\n"); }else { printf("该路径不存在。\n"); } } }3、测试数据与实验结果分析(可以用组合键Alt+PrintScreen截图):上述例子中建立的有向图2121543543该有向图的邻接链表如下序号标号0V11V22V3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度绿色生态苗木种植技术服务承包合同4篇
- 二零二五版农业资源整合与开发合同样本4篇
- 2025年海外教育机构外籍教师聘用合同参考文本
- 二零二五年度事业单位职工退休后健康服务保障合同4篇
- 2025年个人二手房交易全程代理服务合同4篇
- 2025年度安全门采购与安装工程合同2篇
- 二零二五年度2025版新能源汽车充电桩销售合同范本4篇
- 二零二五年度教育培训讲师专业能力评定合同模板4篇
- 2025年度住宅小区道路与照明设施维护合同4篇
- 2025年度金融数据分析派遣员工劳动合同范本4篇
- 南安市第三次全国文物普查不可移动文物-各乡镇、街道分布情况登记清单(表五)
- 选煤厂安全知识培训课件
- 项目前期选址分析报告
- 急性肺栓塞抢救流程
- 《统计学-基于Python》 课件全套 第1-11章 数据与Python语言-时间序列分析和预测
- 《形象价值百万》课件
- 红色文化教育国内外研究现状范文十
- 中医基础理论-肝
- 小学外来人员出入校门登记表
- 《土地利用规划学》完整课件
- GB/T 25283-2023矿产资源综合勘查评价规范
评论
0/150
提交评论