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

9.menu Driven For Bfs and Dfs

1. The document contains code for implementing breadth-first search (BFS) and depth-first search (DFS) algorithms on graphs. 2. It takes the number of vertices as input and builds the adjacency matrix, then provides a menu to choose BFS or DFS and select a source vertex. 3. The chosen algorithm is then applied to traverse the graph and output the visited vertices.

Uploaded by

Shruti Ninawe
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)
628 views7 pages

9.menu Driven For Bfs and Dfs

1. The document contains code for implementing breadth-first search (BFS) and depth-first search (DFS) algorithms on graphs. 2. It takes the number of vertices as input and builds the adjacency matrix, then provides a menu to choose BFS or DFS and select a source vertex. 3. The chosen algorithm is then applied to traverse the graph and output the visited vertices.

Uploaded by

Shruti Ninawe
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

9.

to perform menu driven code for:-


1. Breadth first search
2. Depth first search
Code:-
#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'));

//*********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);

//*****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:-

ENTER THE NUMBER VERTICES 4

ENTER 1 IF 1 HAS A NODE WITH 1 ELSE 0 1

ENTER 1 IF 1 HAS A NODE WITH 2 ELSE 0 1

ENTER 1 IF 1 HAS A NODE WITH 3 ELSE 0 0

ENTER 1 IF 1 HAS A NODE WITH 4 ELSE 0 0

ENTER 1 IF 2 HAS A NODE WITH 1 ELSE 0 1

ENTER 1 IF 2 HAS A NODE WITH 2 ELSE 0 0

ENTER 1 IF 2 HAS A NODE WITH 3 ELSE 0 1

ENTER 1 IF 2 HAS A NODE WITH 4 ELSE 0 1

ENTER 1 IF 3 HAS A NODE WITH 1 ELSE 0 0

ENTER 1 IF 3 HAS A NODE WITH 2 ELSE 0 1

ENTER 1 IF 3 HAS A NODE WITH 3 ELSE 0 0

ENTER 1 IF 3 HAS A NODE WITH 4 ELSE 0 1

ENTER 1 IF 4 HAS A NODE WITH 1 ELSE 0 1

ENTER 1 IF 4 HAS A NODE WITH 2 ELSE 0 0

ENTER 1 IF 4 HAS A NODE WITH 3 ELSE 0 0

ENTER 1 IF 4 HAS A NODE WITH 4 ELSE 0 1

THE ADJACENCY MATRIX IS

1100
1011

0101

1001

MENU

1.B.F.S

2.D.F.S

ENTER YOUR CHOICE1

ENTER THE SOURCE VERTEX :4

4 1 2 3 DO U WANT TO CONTINUE(Y/N) ? y

MENU

1.B.F.S

2.D.F.S

ENTER YOUR CHOICE2

ENTER THE SOURCE VERTEX :3

3 4 1 2 DO U WANT TO CONTINUE(Y/N) ? n

You might also like