采用邻接表存储结构实现图的广度优先遍历_第1页
采用邻接表存储结构实现图的广度优先遍历_第2页
采用邻接表存储结构实现图的广度优先遍历_第3页
采用邻接表存储结构实现图的广度优先遍历_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

采用邻接表存储结构实现图的广度优先遍历。采用邻接表存储结构实现图的广度优先遍历。采用邻接表存储结构实现图的广度优先遍历。V:1.0精细整理,仅供参考采用邻接表存储结构实现图的广度优先遍历。日期:20xx年X月课程设计题目九:图的广度优先遍历基本要求:采用邻接表存储结构实现图的广度优先遍历。(2)对任意给定的图(顶点数和边数自定),建立它的邻接表并输出;(3)实现图的广度优先遍历*/#include<>#include<>#include<>#defineMAX_NUM20intvisited[MAX_NUM]={0};typedefintVertexType;typedefenum{DG=1,UDG}GraphKind;typedefstructArcNode{ intadjvex; intweight; structArcNode*nextarc; ArcNode*info;}ArcNode;typedefstructVNode{ VertexTypedata; ArcNode*firstarc;}VNode,AdjList[MAX_NUM];typedefstruct{ AdjListvertices; intvexnum,arcnum; GraphKindkind;}ALGraph;voidPRIN(ALGraph&G);voidCreat_adjgraph(ALGraph&G);voidbfs(ALGraph&G,intv);voidCreat_adjgraphDG(ALGraph&G);voidCreat_adjgraphUDG(ALGraph&G);voidCreat_adjgraph(ALGraph&G);voidCreat_adjgraphDG(ALGraph&G){ inti,s,d; ArcNode*p=NULL,*q=NULL;=DG; printf("请输入顶点数和边数:"); scanf("%d%d",&,&; for(i=0;i<;++i) { printf("第%d个顶点信息:",i+1); scanf("%d",&[i].data); [i].firstarc=NULL;} for(i=0;i<;++i) { printf("第%d条边的起始顶点编号和终止顶点编号:",i+1); scanf("%d%d",&s,&d); while(s<1||s>||d<1||d> { printf("编号超出范围,重新输入"); scanf("%d%d",&s,&d);} s--; d--; p=new(ArcNode); p->adjvex=d; p->nextarc=[s].firstarc; [s].firstarc=p; }}voidCreat_adjgraphUDG(ALGraph&G){ inti,s,d; ArcNode*p,*q; =UDG; printf("请输入顶点数和边数:"); scanf("%d%d",&,&; for(i=0;i<;++i) { printf("第%d个顶点信息:",i+1); scanf("%d",&[i].data); [i].firstarc=NULL;} for(i=0;i<;++i) { printf("第%d条边的起始顶点编号和终止顶点编号:",i+1); scanf("%d%d",&s,&d); while(s<1||s>||d<1||d> { printf("编号超出范围,重新输入"); scanf("%d%d",&s,&d);} s--; d--; p=new(ArcNode); p->adjvex=d; p->nextarc=[s].firstarc; [s].firstarc=p; q=new(ArcNode); q->adjvex=s; q->nextarc=[d].firstarc; [d].firstarc=q; }}voidPRIN(ALGraph&G){ inti; ArcNode*p; if==DG||==UDG) { for(i=0;i<;++i) { printf("V%d:",[i].data); p=[i].firstarc; while(p!=NULL) { printf("%d\t",p->adjvex+1); p=p->nextarc;} printf("\n");} }}voidbfs(ALGraph&G,intv){ v--; ArcNode*p; intqueue[MAX_NUM],front=0,rear=0; intw,i; for(i=0;i<;i++)visited[i]=0; printf("%4d",v+1); visited[v]=1; rear=(rear+1)%MAX_NUM; queue[rear]=v; while(front!=rear) { front=(front+1)%MAX_NUM; w=queue[front]; p=[w].firstarc; while(p!=NULL) { if(visited[p->adjvex]==0) { printf("%3d",p->adjvex+1); visited[p->adjvex]=1; rear=(rear+1)%MAX_NUM; queue[rear]=p->adjvex;} p=p->nextarc;} } printf("\n");}voidCreat_adjgraph(ALGraph&G){ printf("1:有向图2:无向图\n"); printf("请根据上述提示输入图的类型:" ); scanf("%d",&; switch { caseDG:Creat_adjgraphDG(G);PRIN(G);break; caseUDG:Creat_adjgraphUDG(G);PRIN(G);break;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论