0% found this document useful (0 votes)
68 views7 pages

BFS and DFS Graph

The document contains code to implement graph traversals using breadth-first search (BFS) and depth-first search (DFS) on an adjacency matrix representation of a graph. It includes functions to perform BFS and DFS, adding and removing nodes from a queue for BFS and pushing and popping nodes from a stack for DFS. The main function takes input for the number of vertices and adjacency matrix and allows the user to select BFS or DFS and a starting vertex.

Uploaded by

chin
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
68 views7 pages

BFS and DFS Graph

The document contains code to implement graph traversals using breadth-first search (BFS) and depth-first search (DFS) on an adjacency matrix representation of a graph. It includes functions to perform BFS and DFS, adding and removing nodes from a queue for BFS and pushing and popping nodes from a stack for DFS. The main function takes input for the number of vertices and adjacency matrix and allows the user to select BFS or DFS and a starting vertex.

Uploaded by

chin
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

Que – Write programs for implementation of graph traversals

by applying : (a)BFS (b)DFS


#include<stdio.h>

int q[20],top=-1,front=-1,rear=-1,a[20][20],vis[20],stack[20];

int delete();

void add(int item);

void bfs(int s,int n);

void dfs(int s,int n);

void push(int item);

int pop();

void main()

int n,i,s,ch,j;

char c,dummy;

printf("ENTER THE NUMBER VERTICES ");

scanf("%d",&n);

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

printf("ENTER 1 IF %d HAS A NODE WITH %d ELSE 0 ",i,j);

scanf("%d",&a[i][j]);

printf("THE ADJACENCY MATRIX IS\n");

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)
{

printf(" %d",a[i][j]);

printf("\n");

do

for(i=1;i<=n;i++)

vis[i]=0;

printf("\nMENU");

printf("\n1.B.F.S");

printf("\n2.D.F.S");

printf("\nENTER YOUR CHOICE");

scanf("%d",&ch);

printf("ENTER THE SOURCE VERTEX :");

scanf("%d",&s);

switch(ch)

case 1:bfs(s,n);

break;

case 2:

dfs(s,n);

break;

printf("DO U WANT TO CONTINUE(Y/N) ? ");

scanf("%c",&dummy);

scanf("%c",&c);

}while((c=='y')||(c=='Y'));

}
//**************BFS(breadth-first search) code**************//

void bfs(int s,int n)

int p,i;

add(s);

vis[s]=1;

p=delete();

if(p!=0)

printf(" %d",p);

while(p!=0)

for(i=1;i<=n;i++)

if((a[p][i]!=0)&&(vis[i]==0))

add(i);

vis[i]=1;

p=delete();

if(p!=0)

printf(" %d ",p);

for(i=1;i<=n;i++)

if(vis[i]==0)

bfs(i,n);

void add(int item)

{
if(rear==19)

printf("QUEUE FULL");

else

if(rear==-1)

q[++rear]=item;

front++;

else

q[++rear]=item;

int delete()

int k;

if((front>rear)||(front==-1))

return(0);

else

k=q[front++];

return(k);

//***************DFS(depth-first search) code******************//

void dfs(int s,int n)

int i,k;

push(s);
vis[s]=1;

k=pop();

if(k!=0)

printf(" %d ",k);

while(k!=0)

for(i=1;i<=n;i++)

if((a[k][i]!=0)&&(vis[i]==0))

push(i);

vis[i]=1;

k=pop();

if(k!=0)

printf(" %d ",k);

for(i=1;i<=n;i++)

if(vis[i]==0)

dfs(i,n);

void push(int item)

if(top==19)

printf("Stack overflow ");

else

stack[++top]=item;

int pop()

int k;

if(top==-1)
return(0);

else

k=stack[top--];

return(k);

Output:

You might also like