图的遍历——广度优先遍历——邻接矩阵
来源:互联网 发布:武汉丛林网络看书 编辑:程序博客网 时间:2024/06/04 19:27
/*图的遍历——广度优先遍历——邻接矩阵*/#include<stdio.h>#include<stdlib.h>#include<time.h>#define MAXSIZE 20#define OK 1#define ERROR 0/*队列的存储结构*/typedef int Status;typedef int QElemtype;typedef struct{ QElemtype data[MAXSIZE]; int front; int rear;}sqQueue;/*图的存储结构——邻接矩阵*/#define MAXVEX 100 /*最大顶点数*/#define INFINITY 65535 /*用65535来代表∞*/typedef char VertexType; /*顶点*/typedef int EdgeType; /*权值*/typedef int Boolean; /*Boolean是布尔类型,其值为TURE和FALSE*/Boolean visited[MAXVEX]; /*访问标志的数组*/typedef struct { VertexType vexs[MAXVEX]; /*顶点表*/ EdgeType arc[MAXVEX][MAXVEX]; /*邻接矩阵,可看作边表*/ int numVertexes,numEdge; /*图中当前的顶点数和边数*/}MGraph;Status InitQueue(sqQueue * Q){ Q->front=0; Q->rear=0; return OK;}Status QueueLength(sqQueue Q){ return (Q.rear-Q.front+MAXSIZE)%MAXSIZE;}Status EnQueue(sqQueue * Q, QElemtype e){ if((Q->rear+1)%MAXSIZE==Q->front) { return ERROR; } Q->data[Q->rear]=e; Q->rear=(Q->rear+1)%MAXSIZE; return OK;}Status DeQueue(sqQueue * Q,QElemtype * e){ if(Q->front==Q->rear) { return ERROR; } *e=Q->data[Q->front]; Q->front=(Q->front+1)%MAXSIZE; return OK;}/*邻接矩阵的广度优先遍历*/void BFSTraverse(MGraph G){ int i,j; sqQueue Q; for(i=0;i<G.numVertexes;i++) visited[i]=false; InitQueue(&Q); /*初始化一辅助用的队列*/ for(i=0;i<G.numVertexes;i++) /*对每一个顶点做循环*/ { if(!visited[i]) /*若是未访问过的就处理*/ { visited[i]=true; /*设置当前顶点访问过*/ printf("%c",G.vexs[i]); EnQueue(&Q,i); /*将此顶点入队*/ while(QueueLength(Q)!=0) /*若当前队列不为空*/ { DeQueue(&Q,&i); /*将队中的元素出队列,赋值给i*/ for(j=0;j<G.numVertexes;j++) { /*判断其他顶点若与当前顶点存在边且未访问过*/ if(G.arc[i][j]==1 && !visited[j]) { visited[j]=true; /*找到的此顶点标记为已访问*/ printf("%c",G.vexs[j]); /*打印顶点*/ EnQueue(&Q,j); /*将找到的此顶点入队列*/ } } } } }}int main(){ return 0;}
0 0
- 图——广度优先遍历(邻接矩阵存储)
- 图的遍历——广度优先遍历——邻接矩阵
- 图的广度优先遍历—C
- 图的广度优先遍历::邻接矩阵+队列.
- 图的广度优先遍历(邻接矩阵)
- 图的广度优先遍历邻接矩阵
- 基于邻接矩阵图的广度优先遍历
- 图——邻接矩阵(深度遍历,广度遍历)
- 图的遍历(二)—广度优先遍历
- SDUTOJ 2141 ——数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构 — 图 之 广度优先遍历
- 基于邻接矩阵的广度优先搜索遍历
- 基于邻接矩阵的广度优先搜索遍历
- 基于邻接矩阵的广度优先搜索遍历
- 基于邻接矩阵的广度优先遍历
- 图的遍历——广度优先搜索
- 最少转机——图的广度优先遍历
- 5.2最少转机——图的广度优先遍历
- nginx 实战笔记
- 重写init方法
- 第十二周 【项目2 - 摩托车继承自行车和机动车】
- 解决Gradle导入.jar和.so文件时可能出现的问题
- 生产者消费者问题的一些代码上的见解
- 图的遍历——广度优先遍历——邻接矩阵
- 求解二叉树的深度(高度)_C语言
- UVa 12563 Jin Ge Jin Qu hao
- STUN与TURN技术
- 鸡身上三个部位最脏 千万别吃
- TYVJ 1013
- 郭泰FT5406触摸屏驱动
- C复杂链表
- 自定义构造方法