1 / 11
文档名称:

深度优先与广度优先搜索.doc

格式:doc   大小:46KB   页数:11页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

深度优先与广度优先搜索.doc

上传人:文库旗舰店 2019/9/21 文件大小:46 KB

下载得到文件列表

深度优先与广度优先搜索.doc

文档介绍

文档介绍:程序代码:#include""#include""#include""#definemaxnode40#definenull0#definem  20typedefstructst_arc{intadjvex;intweight;structst_arc*nextarc;}ode;typedefstruct{intvertex;structst_arc*firstarc;}vernode;typedefvernodeadjlist[maxnode];intqueue[maxnode];voiddfs(adjlistg,intk,intvisited[])       //从顶点k出发,深度优先搜索{ode*p;intw;visited[k]=1;printf("%d",g[k].vertex);p=g[k].firstarc;while(p!=null){w=p->adjvex;if(visited[w]==0)dfs(g,w,visited);p=p->nextarc;}}voidbfs(adjlistg,intk,intvisited[])       //从顶点k出发,广度优先搜索{intfront=0,rear=1,w;ode*p;visited[k]=1;                //访问初始顶点printf("%d",k);queue[rear]=k;               //初始顶点入队列while(front!=rear)             //队列不为空{front=(front+1)%m;w=queue[front];              //按访问次序依次出队列p=g[w].firstarc;while(p!=null){if(visited[p->adjvex]==0){visited[p->adjvex]=1;printf("%d",p->adjvex);rear=(rear=1)%m;queue[rear]=p->adjvex;;}p=p->nextarc;}}}voidtrave_bfs(adjlistg,intn){inti,visited[maxnode];         //数组visited标志图中的顶点是否已被访问for(i=1;i<=n;i++)visited[i]=0;for(i=1;i<=n;i++)if(visited[i]==0)bfs(g,i,visited);}voidtrave_dfs(adjlistg,intn){inti,visited[maxnode];         //数组visited标志图中的顶点是否已被访问for(i=1;i<=n;i++)visited[i]=0;for(i=1;i<=n;i++)if(visited[i]==0)dfs(g,i,visited);}voidprint(adjlistg,intn){ode*q;inti;printf("输出无向图的邻接链表示(括号内为边的权值):\n");for(i=1;i<=n;i++){printf("\t%d\t",i);printf("%d->",g[i].vertex);q=g[i].firstarc;while(q!=null){printf("%d",q->adjvex);printf("【%d】->",q->weight);q=q->nextarc;}printf("\n");}}voidmain(){ode*p,*q;adjlistg;inti,j,n,k,w,e;printf("输入图中顶点的个数,边数(数据用空格隔开):");scanf("%d%d",&n,&e);for(k=1;k<=n;k++){getchar();printf("\t第%d个顶点信息:",k);scanf("%d",&g[k].vertex);g[k].firstarc=null;             //对顺序存储部分初始化}for(k=1;k<=e;k++){printf("第%d条边的起点,终点,权值:",k);scanf("%d%d%d(数据用空格隔开)",&i,&j,&w);q=(ode*)malloc(sizeof(ode));q->adjvex=j;q->weight=w;q->nextarc=g[i].firstarc;g[i].firstarc=q;p=(ode*)malloc(sizeof(ode));p->adjvex=i;p->weight=w;p->nextarc=g[j].firstarc;g[j].firstarc=p;}print(g,n);printf("\n");printf("图的深度优先搜索: