Implement the BFS Traversals on Graphs.
#include<stdio.h>
#define size 10
int q[10],visited[10],a[10][10],f=-1,r=-1,n,v,w,st;
void bfs(int st);
void enqueue(int);
int dequeue();
int inqueue(int);
int main()
{
int i,j;
printf("enter no of vertices");
scanf("%d",&n);
printf("\nenter adjacent matrix for given graph");
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
scanf("%d",&a[i][j]);
visited[i]=0;
}
}
printf("\nenter starting vertex");
scanf("%d",&st);
printf("\nbfs traversal of given graph");
bfs(st);
return 0;
}
void bfs(int st)
{
enqueue(st);
while(f!=-1&&r!=-1)
{
v=dequeue();
if(visited[v]==0)
{
visited[v]=1;
printf("->%d",v);
for(w=1;w<=n;w++)
{
if(a[v][w]==1)
{
if(visited[w]==0&&inqueue(w)==0)
{
enqueue(w);
}
}
}
}
}
}
void enqueue(int x)
{
if(r==size-1)
printf("\n queue is overflow");
else
{
if(f==-1&&r==-1)
{
f=0;
r=0;
q[r]=x;
}
else
{
r=r+1;
q[r]=x;
}
}
}
int dequeue()
{
int item;
if(f==-1&&r==-1)
return -1;
else
{
if(f==r)
{
item=q[f];
f=-1;
r=-1;
return item;
}
else
{
item=q[f];
f=f+1;
return item;
}
}
}
int inqueue(int w)
{
int j;
for(j=f;j<=r;j++)
{
if(q[j]==w)
return 1;
}
return 0;
}
Comments
Post a Comment