Print Friendly and PDF
reate a graph and use Deapth First Search(DFS) and Breadth First Search(BFS) Traversal
#include<conio.h > 
#include< iostream.h > 
#include< stdlib.h > 
void create(); // For creating a graph 
void dfs(); // For Deapth First Search(DFS) Traversal. 
void bfs(); // For Breadth First Search(BFS) Traversal. 
struct node // Structure for elements in the graph 
{ 
int data,status; 
struct node *next; 
struct link *adj; 
}; 
struct link // Structure for adjacency list 
{ 
struct node *next; 
struct link *adj; 
}; 
struct node *start,*p,*q; 
struct link *l,*k; 
int main() 
{ 
int choice; 
clrscr(); 
create(); 
while(1) 
{ 
cout<<" 
1: DFS 
2: BSF 
3: Exit 
Enter your choice: "; 
cin>>choice; 
switch(choice) 
{ 
case 1: 
dfs(); 
break; 
case 2: 
bfs(); 
break; 
case 3: 
exit(0); 
break; 
default: 
cout<<" 
Incorrect choice! 
Re-enter your choice."; 
getch(); 
} 
} 
return 0; 
} 
void create() // Creating a graph 
{ 
int dat,flag=0; 
start=NULL; 
cout<<" 
Enter the nodes in the graph(0 to end): "; 
while(1) 
{ 
cin>>dat; 
if(dat==0) 
break; 
p=new node; 
p->data=dat; 
p->status=0; 
p->next=NULL; 
p->adj=NULL; 
if(flag==0) 
{ 
start=p; 
q=p; 
flag++; 
} 
else 
{ 
q->next=p; 
q=p; 
} 
} 
p=start; 
while(p!=NULL) 
{ 
cout<<"Enter the links to "<< p->data<<" (0 to end) : "; 
flag=0; 
while(1) 
{ 
cin>>dat; 
if(dat==0) 
break; 
k=new link; 
k->adj=NULL; 
if(flag==0) 
{ 
p->adj=k; 
l=k; 
flag++; 
} 
else 
{ 
l->adj=k; 
l=k; 
} 
q=start; 
while(q!=NULL) 
{ 
if(q->data==dat) 
k->next=q; 
q=q->next; 
} 
} 
p=p->next; 
} 
cout<<"-------------------------"; 
return; 
} 
// Deapth First Search(DFS) Traversal. 
void bfs() 
{ 
int qu[20],i=1,j=0; 
p=start; 
while(p!=NULL) 
{ 
p->status=0; 
p=p->next; 
} 
p=start; 
qu[0]=p->data; 
p->status=1; 
while(1) 
{ 
if(qu[j]==0) 
break; 
p=start; 
while(p!=NULL) 
{ 
if(p->data==qu[j]) 
break; 
p=p->next; 
} 
k=p->adj; 
while(k!=NULL) 
{ 
q=k->next; 
if(q->status==0) 
{ 
qu[i]=q->data; 
q->status=1; 
qu[i+1]=0; 
i++; 
} 
k=k->adj; 
} 
j++; 
} 
j=0; 
cout<<"Breadth First Search Results"; 
cout<<"---------------------------"; 
while(qu[j]!=0) 
{ 
cout<< qu[j] << " "; 
j++; 
} 
getch(); 
return; 
} 
// Breadth First Search(BFS) Traversal. 
void dfs() 
{ 
int stack[25],top=1; 
cout<<"Deapth First Search Results"; 
cout<<"---------------------------"; 
p=start; 
while(p!=NULL) 
{ 
p->status=0; 
p=p->next; 
} 
p=start; 
stack[0]=0; 
stack[top]=p->data; 
p->status=1; 
while(1) 
{ 
if(stack[top]==0) 
break; 
p=start; 
while(p!=NULL) 
{ 
if(p->data==stack[top]) 
break; 
p=p->next; 
} 
cout<< stack[top]<<" "; 
top--; 
k=p->adj; 
while(k!=NULL) 
{ 
q=k->next; 
if(q->status==0) 
{ 
top++; 
stack[top]=q->data; 
q->status=1; 
} 
k=k->adj; 
} 
} 
getch(); 
return; 
}
zubairsaif

Zubair saif

A passionate writer who loves to write on new technology and programming

Post A Comment:

0 comments: