Bftanddft.c 0590
Bftanddft.c 0590
h>
#include<stdlib.h>
#include<stdbool.h>
#define MAX_VERTICES 100
int adjMatrix[MAX_VERTICES][MAX_VERTICES];
int numVertices;
void initializeGraph();
void addEdge(int u,int v);
void breadthFirstTraversal(int start);
void depthFirstTraversal(int start,bool visited[]);
void initializeGraph(){
numVertices=0;
for(int i=0;i<MAX_VERTICES;i++){
for(int j=0;j<MAX_VERTICES;j++){
adjMatrix[i][j]=0;
}
}
}
void addEdge(int u,int v){
adjMatrix[u][v]=1;
adjMatrix[v][u]=1;
if(u>numVertices)
numVertices=u;
if(v>numVertices)
numVertices=v;
}
void breadthFirstTraversal(int start)
{
bool visited[MAX_VERTICES]={false};
int queue[MAX_VERTICES];
int front=0,rear=0;
visited[start]=true;
queue[rear++]=start;
while(front<rear){
int current=queue[front++];
printf("%d ",current);
for(int i=1;i<=numVertices;i++){
if(adjMatrix[current][i]&&!visited[i]){
visited[i]=true;
queue[rear++]=i;
} }
}
printf("\n");
}
void depthFirstTraversal(int start,bool visited[]){
visited[start]=true;
printf("%d ",start);
for(int i=1;i<=numVertices;i++){
if(adjMatrix[start][i]&&!visited[i]){
depthFirstTraversal(i,visited);
}
}
}
int main(){
initializeGraph();
addEdge(1,2);
addEdge(1,3);
addEdge(2,4);
addEdge(2,5);
addEdge(3,6);
addEdge(3,7);
addEdge(4,8);
addEdge(5,8);
addEdge(6,8);
addEdge(7,8);
printf("Breadth-First Traversal(BFT)starting from vertex1: ");
breadthFirstTraversal(1);
bool visited[MAX_VERTICES]={false};
printf("Depth-FirstTraversal(DFT)starting from vertex1: ");
depthFirstTraversal(1,visited);
printf("\n");
return 0;
}