#include <stdio.
h>
#define max 3
void bfs(int adj[][max], int visited[], int start) {
int queue[max], front = -1, rear = -1, i, k;
for (k = 0; k < max; k++) {
visited[k] = 0;
queue[++rear] = start;
front++;
visited[start] = 1;
while (rear >= front) {
start = queue[front++];
printf("%c-", start + 65);
for (i = 0; i < max; i++) {
if (adj[start][i] && visited[i] == 0) {
queue[++rear] = i;
visited[i] = 1;
printf("\n");
void dfs(int adj[][max], int visited[], int start) {
int stack[max], top = -1, i;
for (i = 0; i < max; i++) {
visited[i] = 0;
stack[++top] = start;
visited[start] = 1;
while (top != -1) {
start = stack[top--];
printf("%c-", start + 65);
for (i = 0; i < max; i++) {
if (adj[start][i] && visited[i] == 0) {
stack[++top] = i;
visited[i] = 1;
printf("\n");
int main() {
int visited[max] = {0};
int adj[max][max], i, j;
int opt;
while (1) {
printf("Enter option:\n");
printf("1: Create adjacency matrix\n");
printf("2: BFS Traversal\n");
printf("3: DFS Traversal\n");
printf("4: Exit\n");
scanf("%d", &opt);
switch (opt) {
case 1:
printf("Create adjacency matrix (3x3):\n");
for (i = 0; i < max; i++) {
for (j = 0; j < max; j++)
scanf("%d", &adj[i][j]);
break;
case 2:
printf("BFS Traversal starting from node 0:\n");
bfs(adj, visited, 0);
break;
case 3:
printf("DFS Traversal starting from node 0:\n");
dfs(adj, visited, 0);
break;
case 4:
return 0;
return 0;
Output:-
/tmp/ZmfkoLq8ce.o
Enter option:
1: Create adjacency matrix
2: BFS Traversal
3: DFS Traversal
4: Exit
Create adjacency matrix (3x3):
1
0
Enter option:
1: Create adjacency matrix
2: BFS Traversal
3: DFS Traversal
4: Exit
BFS Traversal starting from node 0:
A-B-C-
Enter option:
1: Create adjacency matrix
2: BFS Traversal
3: DFS Traversal
4: Exit
DFS Traversal starting from node 0:
A-C-B-
Enter option:
1: Create adjacency matrix
2: BFS Traversal
3: DFS Traversal
4: Exit