BFS图的遍历

广度优先搜索算法(BFS):

#include <stdio.h>
#include <string.h>

const int GNumber = 8;
int G[GNumber][GNumber];
int visit[GNumber];// 防止回环 
struct Queue//用数组模拟队列 
{ 
	int queue[GNumber]; 
	int start; 
	int end;
}MyQueue;

void BFS(int G[][GNumber], int n)
{ 
	int j; 
	MyQueue.queue[MyQueue.end++] = 0; 
	visit[0] = 1; 
	while(MyQueue.end != MyQueue.start) 
	{  //color[MyQueue.start] = 1;  
		for(j=0; j<n; j++)  
		{   
			if(G[MyQueue.start][j] && !visit[j])   
			{    
				visit[j] = 1;    
				MyQueue.queue[MyQueue.end++] = j;   
			}  
		}  
		printf(" V%d ", MyQueue.queue[MyQueue.start++]+1); 
	}
}

int main(int argc, char **argv)
{ 
	FILE *fr; 
	int i,j; 
	fr = fopen("dfs.txt","r"); 
	if(!fr) 
	{  
		printf("fopen failed\n");  
		return -1;  
	} 
	while(fscanf(fr,"%d%d", &i, &j) != EOF) 
	{  
		G[i-1][j-1] = 1;  
		G[j-1][i-1] = 1; 
	} 
	memset(&MyQueue, 0, sizeof(MyQueue)); 
	memset(visit, 0, sizeof(visit)); 
	BFS(G,GNumber); 
	getchar(); 
	return 0;
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值