第十一周 项目三 “深度优先遍历”
来源:互联网 发布:自由行 软件 编辑:程序博客网 时间:2024/05/29 10:54
/*烟台大学计算机学院 作者:董玉祥 完成日期: 2017 12 3 问题描述:图遍历算法实现 */深度优先遍历#include <stdio.h>#include <malloc.h>#include "graph.h"int visited[MAXV];void DFS(ALGraph *G, int v){ ArcNode *p; int w; visited[v]=1; printf("%d ", v); p=G->adjlist[v].firstarc; while (p!=NULL) { w=p->adjvex; if (visited[w]==0) DFS(G,w); p=p->nextarc; }}int main(){ int i; ALGraph *G; int A[5][5]= { {0,1,0,1,0}, {1,0,1,0,0}, {0,1,0,1,1}, {1,0,1,0,1}, {0,0,1,1,0} }; ArrayToList(A[0], 5, G); for(i=0; i<MAXV; i++) visited[i]=0; printf(" 由2开始深度遍历:"); DFS(G, 2); printf("\n"); for(i=0; i<MAXV; i++) visited[i]=0; printf(" 由0开始深度遍历:"); DFS(G, 0); printf("\n"); return 0;}
广度优先遍历#include <stdio.h>#include <malloc.h>#include "graph.h"void BFS(ALGraph *G, int v){ ArcNode *p; int w,i; int queue[MAXV],front=0,rear=0; //定义循环队列 int visited[MAXV]; //定义存放节点的访问标志的数组 for (i=0; i<G->n; i++) visited[i]=0; //访问标志数组初始化 printf("%2d",v); //输出被访问顶点的编号 visited[v]=1; //置已访问标记 rear=(rear+1)%MAXV; queue[rear]=v; //v进队 while (front!=rear) //若队列不空时循环 { front=(front+1)%MAXV; w=queue[front]; //出队并赋给w p=G->adjlist[w].firstarc; //找w的第一个的邻接点 while (p!=NULL) { if (visited[p->adjvex]==0) { printf("%2d",p->adjvex); //访问之 visited[p->adjvex]=1; rear=(rear+1)%MAXV; //该顶点进队 queue[rear]=p->adjvex; } p=p->nextarc; //找下一个邻接顶点 } } printf("\n");}int main(){ ALGraph *G; int A[5][5]= { {0,1,0,1,0}, {1,0,1,0,0}, {0,1,0,1,1}, {1,0,1,0,1}, {0,0,1,1,0} }; ArrayToList(A[0], 5, G); printf(" 由2开始广度遍历:"); BFS(G, 2); printf(" 由0开始广度遍历:"); BFS(G, 0); return 0;}
阅读全文
0 0
- 第十一周 项目三 “深度优先遍历”
- 第十一周项目三 图遍历算法的实现(1)深度优先遍历
- 第十一周项目3 — 图遍历算法实现 (1)深度优先遍历
- 第十一周项目五迷宫问题之图深度优先遍历解法
- 第十一周项目五——迷宫问题之图深度优先遍历解法
- 数据结构第十一周项目5--迷宫问题之图深度优先遍历解法
- 第十一周项目5-迷宫问题之图深度优先遍历解法
- 第十一周项目五C/C++迷宫问题之图深度优先遍历解法
- 第十一周项目5—迷宫问题之图深度优先遍历解法
- 第十一周-项目4-1-应用图的深度优先遍历思路求解问题
- 第十一周-项目4-2-应用图的深度优先遍历思路求解问题
- 第十一周-项目4-3-应用图的深度优先遍历思路求解问题
- 第十一周-项目4-4-应用图的深度优先遍历思路求解问题
- 第十一周-项目4-5-应用图的深度优先遍历思路求解问题
- 第十一周-项目五-迷宫问题之图深度优先遍历解法
- 第十一周-项目三-图的遍历
- 第十一周项目三 图的遍历
- 第十一周——项目四(1)—应用图的深度优先遍历思路求解问题
- JavaScript--利用变量来修改属性的小练习
- 数据结构与算法
- PDF文档如何加标签?哪个阅读器好用?
- 利用jQuery中的bgstretcher插件制作幻灯片效果背景
- 第14周项目3
- 第十一周 项目三 “深度优先遍历”
- CentOS 6.8 数据库安装5.5.32
- SDNU__1280.求N进制的高精度加法
- linux安装hadoop教程
- 深入浅出Go常量
- Mysql查询每个月的最后一天
- 浮点数在内存中的存储,头文件,名大小写是否区分,unsigned int在实现两数相加时应注意什么
- LaTeX论文写作
- scikit-learn广义线性模型之岭回归