版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文格式为Word版,下载可任意编辑——以邻接多重表为存储结构,实现连通无向图的深度优先和广度优先遍/*
以邻接多重表为存储结构,实现连通无向图的深度优先和广度优先遍历。
以用户指定的结点为起点,分别输出每种遍历下的结点访问序列和相应生成树的边集*///________头文件___________________________________________________________#include<iostream>usingnamespacestd;
//_______无向图的邻接多重表存储表示p166____________________________________constintNUM=20;
constintData_Num=2;//每个顶点所表示的数据typedefcharVertexType[Data_Num];
/*
#defineMAX_VERTEX_NUM20typedefstructemnu{intunvisited;intvisited;}VisitIf;
typedefstructInfoType{};typedefstructVertexType{};*/
typedefstructEBox{intmark;//访问标记
intivex,jvex;//该边依附的2个顶点位置structEBox*ilink,*jlink;//分别指向依附这2个顶点的下一条边
//InfoType*info;//该边信息指针}EBox;
typedefstructVexBox{VertexTypedata;EBox*firstedge;//指向第一条依附该顶点的边}VexBox;
typedefstruct{VexBoxadjmulist[NUM];
intvexnum,edgenum;//无向图的当前顶点和边数}AMLGraph;
//_________________________队列的定义_____________________________________typedefintQElemType;typedefstructQNode{QElemTypedata;structQNode*next;
}QNode,*QueuePtr;
typedefstruct{QueuePtrfront,rear;
}LinkQueue;
//_____________________寻觅指定数据______________________________________________//寻觅输入的数据在图中的位置,若不存在则返回-1
intLocateVex(AMLGraphG,VertexTypeu){inti;for(i=0;i<G.vexnum;i++)if(strcmp(u,G.adjmulist[i].data)==0)returni;return-1;}
//________________________构造无向图_______________________________________________//采用邻接多重表存储表示,构造无向图G
intCreateGraph(AMLGraph&G){cout<<"请输入图的顶点数:";cin>>G.vexnum;//输入图当前的顶点数cout<<"请输入图的弧数:";cin>>G.edgenum;//输入图当前的边数cout<<"请输入每个顶点所对应的值:"<<endl;for(inti=0;i<G.vexnum;i++){cin>>G.adjmulist[i].data;//输入顶点值G.adjmulist[i].firstedge=NULL;//初始化指针}VertexTypev1,v2;EBox*p;intj;//每条弧所关联的两个结点for(intk=0;k<G.edgenum;k++){cout<<"请输入第"<<k+1<<"弧的始点和终点:";cin>>v1;cin>>v2;i=LocateVex(G,v1);j=LocateVex(G,v2);/
/确定v1和v2在图G中的位置p=(EBox*)malloc(sizeof(EBox));//对弧结点进行赋值(*p).mark=0;(*p).ivex=i;(*p).jvex=j;(*p).ilink=G.adjmulist[i].firstedge;(*p).jlink=G.adjmulist[j].firstedge;G.adjmulist[i].firstedge=G.adjmulist[j].firstedge=p;}return1;}
//返回V的值
VertexType*GetVex(AMLGraphG,intv){if(v>G.vexnum||v<0)exit(0);return&G.adjmulist[v].data;}
//返回V的第一个邻接点的序号,若没有则返回-1
intFirstAdjVex(AMLGraphG,VertexTypev){inti;i=LocateVex(G,v);if(i<0)return-1;if(G.adjmulist[i].firstedge)//V有邻接结点if(G.adjmulist[i].firstedge->ivex==i)returnG.adjmulist[i].firstedge->jvex;elsereturnG.adjmulist[i].firstedge->ivex;elsereturn-1;}
//返回V的(相对于W)的下一个邻接结点的序号,若W是V的最终一个邻接结点,则返回-1
intNextAdjVex(AMLGraphG,VertexTypev,VertexTypew)
{
inti,j;EBox*p;
i=LocateVex(G,v);j=LocateVex(G,w);if(i<0||j<0)return-1;
p=G.adjmulist[i].firstedge;while(p)if(p->ivex==i&&p->jvex!=j)p=p->ilink;elseif(p->jvex==i&&p->ivex!=j)p=p->jlink;elsebreak;if(p&&p->ivex==i&&p->jvex==j){p=p->ilink;if(p&&p->ivex==i)returnp->jvex;elseif(p&&p->jvex==i)returnp->jvex;}if(p&&p->ivex==j&&p->jvex==i){p=p->jlink;if(p&&p->ivex==i)returnp->jvex;elseif(p&&p->jvex==i)returnp->jvex;}return-1;
}
//__________________________队列的操作_________________________________________
intvisite[NUM];//访问标志数组int(*VisitFunc)(VertexTypev);
voidDFS(AMLGraphG,intv){
}
intj;EBox*p;
VisitFunc(G.adjmulist[v].data);visite[v]=1;//该顶点已经被访问p=G.adjmulist[v].firstedge;while(p){j=p->ivex==v?p->jvex:p->ivex;if(!visite[j])DFS(G,j);p=p->ivex==v?p->ilink:p->jlink;}
//________深度优先探寻_______________________________________________________voidDFSTraverse(AMLGraphG,int(*Visit)(VertexType)){intv,start;VisitFunc=Visit;for(v=0;v<G.vexnum;v++)visite[v]=0;cout<<"请输入你要开始进行查找的位置:";cin>>start;cout<<"按广深度优先探寻的结果是:"<<endl;for(v=start;v<G.vexnum;v++){if(v
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 县域小型引调水工程初步设计
- 公司资金结算自动化方案
- 九江银行吉安分行2026年社会招聘笔试参考题库及答案解析
- 2026湖南湘潭市第五人民医院见习生招募考试备考题库及答案解析
- 2026年甘肃省白银市兰白口腔医院招聘13人笔试模拟试题及答案解析
- 2026年能源行业创新报告及地热能开发技术商业化路径分析报告
- 2026湖南郴州市现代农业发展有限公司招聘1人笔试备考试题及答案解析
- 2026年芜湖市第五十中学招聘校聘教师3名笔试备考试题及答案解析
- 2026年江苏中烟工业有限责任公司招聘68人(第二批)笔试备考试题及答案解析
- 2026年宣城泾县云岭红旅小镇旅游发展有限责任公司公开招聘工作人员6名笔试模拟试题及答案解析
- 2026年山东圣翰财贸职业学院单招综合素质考试备考试题带答案解析
- 滑板基础施工方案(3篇)
- 2025年退休党支部书记抓党建工作述职报告
- 水下焊接技术培训课件
- 2026年小红书运营账号人设差异化打造调研
- 大班幼儿劳动教育的现状与对策研究
- 2025年四川省绵阳市中考数学试卷附解析答案
- 财务咨询服务合同协议2025
- 2025版 全套200MW800MWh独立储能项目EPC工程概算表
- 2026年包头铁道职业技术学院单招职业适应性测试题库及答案解析(名师系列)
- 热性惊厥临床指南
评论
0/150
提交评论